NLog中maxLevel=off与同输出其他配置组合的作用及行为问询
NLog配置行为解析
先贴出你给出的配置代码:
<logger name="Name.Space.*" minLevel="Info" writeTo="console" final="true"/> <logger name="Name.Space.*" maxLevel="off" writeTo="console" final="true"/>
先搞懂maxLevel="off"的特殊作用
在NLog里,maxLevel="off"是个优先级极高的配置——只要某个logger设置了它,不管你同时配了什么minLevel或者其他级别规则,这个logger都不会输出任何日志,相当于直接把这个logger的输出功能关了。
这套配置的实际运行逻辑
NLog会按配置文件里logger的顺序依次匹配日志,只有符合当前logger过滤条件的日志才会触发动作,且final="true"会让当前日志的处理流程直接终止,不再往下匹配其他logger:
- 对
Name.Space.*下的Info级别及以上的日志(比如Info、Warn、Error、Fatal):
会被第一条logger命中(名称匹配+级别满足minLevel="Info"),然后输出到console,接着因为final="true",这条日志的处理就结束了,不会碰第二条logger。 - 对
Name.Space.*下的低于Info级别的日志(比如Debug、Trace):
不满足第一条logger的级别要求,会继续匹配第二条logger。但第二条logger开了maxLevel="off",直接禁用输出,所以这类日志不会被输出到console。
最终效果
Name.Space.*命名空间下,只有Info、Warn、Error、Fatal级别的日志会输出到console;Debug、Trace级别的日志完全不会输出到console。
内容的提问来源于stack exchange,提问作者YungDeiza
相关产品推荐
相关产品推荐

