为什么这个 NLog 布局的 "when" 子句不起作用?
Why is this NLog layout's "when" clause not working?
我有一个像这样的 NLog 布局:
${date} ${uppercase:${level}} ${when:when=(level)>=LogLevel.Debug:callsite:includeSourcePath=false}: ${message}
when
大部分都有效。我的日志条目不显示调用站点,因为它们处于 Info
级别,但单词 callsite
在日志条目中作为文字输出:
2016/10/06 09:15:15.814 INFO callsite: Application has started
monitoring 'MSSQLSERVER' service at 10 second intervals.
如果我尝试这样的布局:
${date} ${uppercase:${level}} ${when:when=(level)>=LogLevel.Debug:${callsite:includeSourcePath=false}}: ${message}
然后 when
根本不起作用,并且条目包含正确的输出调用站点信息:
2016/10/06 09:17:01.718 INFO
SqlServer.Monitor.Application.MonitorApplication.Start: Application
has started monitoring 'MSSQLSERVER' service at 10 second intervals.
根据规范,这应该有效:
${date} ${uppercase:${level}} ${when:when=(level>=LogLevel.Debug):inner=${callsite:includeSourcePath=false}}: ${message}
更新,你哪里漏了:inner
。这是必需的,因为在这种情况下 {when}
的第一个参数是 when=
.
另一个有效的例子:
${when:when=level<=LogLevel.Info:inner=Good:else=Bad}
中的测试
我有一个像这样的 NLog 布局:
${date} ${uppercase:${level}} ${when:when=(level)>=LogLevel.Debug:callsite:includeSourcePath=false}: ${message}
when
大部分都有效。我的日志条目不显示调用站点,因为它们处于 Info
级别,但单词 callsite
在日志条目中作为文字输出:
2016/10/06 09:15:15.814 INFO callsite: Application has started monitoring 'MSSQLSERVER' service at 10 second intervals.
如果我尝试这样的布局:
${date} ${uppercase:${level}} ${when:when=(level)>=LogLevel.Debug:${callsite:includeSourcePath=false}}: ${message}
然后 when
根本不起作用,并且条目包含正确的输出调用站点信息:
2016/10/06 09:17:01.718 INFO SqlServer.Monitor.Application.MonitorApplication.Start: Application has started monitoring 'MSSQLSERVER' service at 10 second intervals.
根据规范,这应该有效:
${date} ${uppercase:${level}} ${when:when=(level>=LogLevel.Debug):inner=${callsite:includeSourcePath=false}}: ${message}
更新,你哪里漏了:inner
。这是必需的,因为在这种情况下 {when}
的第一个参数是 when=
.
另一个有效的例子:
${when:when=level<=LogLevel.Info:inner=Good:else=Bad}
中的测试