NLog:如何从特定规则中排除特定记录器?

Nat*_*ley 37 nlog

在我的NLog配置中,我有一个全能记录器,但我创建的特定记录器非常垃圾,我希望它的输出转到它自己的文件.这一部分很简单,但是catch-all记录器也会收到垃圾邮件日志消息.如何告诉主记录器记录所有内容,但要排除垃圾记录器?

我正在使用NLog 2.0.

wag*_*ghe 80

我觉得这样的事情就是你想要的:

<logger name="SpammyLogger" minlevel="Off" maxlevel="Trace" final="true" />  
<logger name="SpammyLogger" minlevel="Debug" maxlevel="Fatal" writeTo="SpammyFileTarget" final="true" />  
<logger name="*" levels="Trace" writeTo="RegularFileTarget/" />  
Run Code Online (Sandbox Code Playgroud)

添加final="true"意味着不再为生成的事件执行规则"SpammyLogger",但它仅适用于指定的级别.(请参阅https://github.com/nlog/nlog/wiki/Configuration-file#rules)

请参阅此链接以获取更多有用的NLog信息:

最有用的NLog配置

  • 您定义记录器的顺序很重要.如果你在"SpammyLogger"之前定义"*",那么最终属性将毫无用处.花了一些时间想出那一个. (9认同)
  • `minlevel ="Off"maxlevel ="Trace"final ="true"`什么都不做,至少在NLog 4.3.10中没有,因为`Off`实际上是_highest_ log级别所以`Off`和`之间没有任何级别Trace`.请参阅https://github.com/NLog/NLog/blob/v4.3.10/src/NLog/LogLevel.cs#L86. (6认同)
  • 如果你有不止一个,我认为这是破坏的,正如@bitbonk所提到的那样.我试图为10个不同的记录器使用特定的记录器规则,但是catch-all总是捕获所有内容的跟踪日志. (2认同)