【问题标题】:NLog: How to exclude specific loggers from a specific rule?NLog:如何从特定规则中排除特定记录器?
【发布时间】:2011-12-21 04:43:41
【问题描述】:

在我的 NLog 配置中,我有一个包罗万象的记录器,但我创建的一个特定记录器非常垃圾,我希望它的输出转到它自己的文件中。这部分很简单,但是包罗万象的记录器也会收到垃圾日志消息。我如何告诉主记录器记录除垃圾记录器排除之外的所有内容?

我正在使用 NLog 2.0。

【问题讨论】:

    标签: nlog


    【解决方案1】:

    我认为你想要这样的东西:

    <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/" />  
    

    添加final="true"意味着不会再对"SpammyLogger"产生的事件执行规则,但它只适用于指定的级别。(见https://github.com/nlog/nlog/wiki/Configuration-file#rules

    查看此链接了解更多可能对您有帮助的 NLog 信息:

    Most useful NLog configurations

    【讨论】:

    • 您定义记录器的顺序很重要。如果您要在“SpammyLogger”之前定义“*”,那么最终属性将毫无用处。花了一些时间来解决这个问题。
    • 只要您想排除一个记录器,这一切都可以正常工作。但是一旦有更多,就不可能用日志规则来建模。
    • 我认为这是坏的,正如@bitbonk 提到的,如果你有多个。我正在尝试为 10 个不同的记录器使用特定的记录器规则,但包罗万象的总是从所有内容中捕获跟踪日志。
    • 这已针对 NLog 4 进行了更改,您现在必须在最终规则中指定最小和最大级别。见nlog-project.org/2015/06/09/nlog-4-has-been-released.html
    • minlevel="Off" maxlevel="Trace" final="true" 什么都不做,至少在 NLog 4.3.10 中没有,因为 Off 实际上是 最高 日志级别,所以在 OffTrace。见github.com/NLog/NLog/blob/v4.3.10/src/NLog/LogLevel.cs#L86
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多