为什么这个NLog布局的“when”子句不起作用?

时间:2016-10-06 07:22:54

标签: logging nlog

我有这样的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 :应用程序已启动   以10秒的间隔监控“MSSQLSERVER”服务。

如果我尝试这样的布局:

${date} ${uppercase:${level}} ${when:when=(level)>=LogLevel.Debug:${callsite:includeSourcePath=false}}: ${message}

然后when根本不起作用,条目包含正确的outpout呼叫网站信息:

  

2016/10/06 09:17:01.718 INFO   SqlServer.Monitor.Application.MonitorApplication.Start:应用程序   已开始以10秒的间隔监控“MSSQLSERVER”服务。

1 个答案:

答案 0 :(得分:1)

根据规格,这应该有效:

${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}

查看this PR on GitHub

中的测试