NLog Core 2.0自动记录日志

时间:2018-10-12 20:59:53

标签: logging .net-core nlog

我正在使用.Net Core 2.0构建API。

我正在设置NLog进行日志记录,但是有些“谜团”我无法弄清。

我已遵循this的配置,但我不明白两点:

  1. Nlog如何区分nlog-allnlog-own。我的意思是,两个文件的规则都相同:

    <logger name="*" minlevel="Trace" writeTo="allfile" />
    
    <logger name="*" minlevel="Trace" writeTo="ownFile-web" />
    
  2. 为什么NLog自动登录到nlog-all?如何控制它?
  3. 是的,我说谎了,我说了两件事,但是如果要在xml appsettings.json文件中配置所有内容,那么配置nlog.config有什么意义呢?

1 个答案:

答案 0 :(得分:1)

神奇的事情发生在您很好地排除在示例之外的记录规则中:

  <!-- rules to map from logger name to target -->
  <rules>
    <!--All logs, including from Microsoft-->
    <logger name="*" minlevel="Trace" writeTo="allfile" />

    <!--Skip non-critical Microsoft logs and so log only own logs-->
    <logger name="Microsoft.*" maxLevel="Info" final="true" /> <!-- BlackHole without writeTo -->

    <logger name="*" minlevel="Trace" writeTo="ownFile-web" />
  </rules>

从上到下评估日志记录规则:

  • 顶部的“ allFile”规则将匹配所有记录器(名称=“ *”)

  • 中间的BlackHole规则将匹配所有Microsoft记录器,并且由于final =“ true”,它将停止进一步的匹配。

  • 最后一个“ ownFile”将从所有不以Microsoft开始的记录器中接收所有信息。

另请参阅https://github.com/nlog/NLog/wiki/Configuration-file#rules

另请参阅https://github.com/nlog/NLog/wiki/Tutorial