NLog配置规则不生效

问题描述 投票:0回答:1

我有我的项目的以下nlog.config文件。当我在本地调试时,它按预期工作,Hangfire消息被过滤以仅显示警告及以上。但是在我们的登台服务器(IIS 8.5)上,nlog似乎忽略了该规则,只将所有内容(包括Info)记录到elmah:

  <?xml version="1.0" encoding="utf-8" ?>
  <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <extensions>
    <add assembly="NLog.Elmah"/>
  </extensions>
  <targets>
    <target xsi:type="Elmah" name="elmahWithLogLevelAsType" layout="${message}" LogLevelAsType="true"/>
  </targets>
  <rules>
    <logger name="Hangfire.*" minlevel="Warn" writeTo="elmahWithLogLevelAsType" final="true" />
    <logger name="*" minlevel="Info" writeTo="elmahWithLogLevelAsType" />
  </rules>
</nlog>

即使我删除了Hangfire.*规则并将catchall更改为minlevel="Warn",它仍会记录Info项目。

nlog elmah nlog-configuration
1个回答
1
投票

认为您正在运行两个不同版本的NLog。

这将捕获所有带警告的日志事件(以及以上级别):

<logger name="Hangfire.*" minlevel="Warn" writeTo="elmahWithLogLevelAsType" final="true" />

这意味着所有包含信息或以下信息的日志事件都将尝试下一个规则:

<logger name="*" minlevel="Info" writeTo="elmahWithLogLevelAsType" />

请尝试此配置:

<?xml version="1.0" encoding="utf-8" ?>
  <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <extensions>
    <add assembly="NLog.Elmah"/>
  </extensions>
  <targets>
    <target xsi:type="Elmah" name="elmahWithLogLevelAsType" layout="${message}" LogLevelAsType="true"/>
  </targets>
  <rules>
    <logger name="Hangfire.*" minlevel="Warn" writeTo="elmahWithLogLevelAsType" final="true" />
    <logger name="Hangfire.*" maxLevel="Warn" final="true" /> <!-- BlackHole -->
    <logger name="*" minlevel="Info" writeTo="elmahWithLogLevelAsType" />
  </rules>
</nlog>
© www.soinside.com 2019 - 2024. All rights reserved.