[使用NLog写入文件目标时,如果event-properties:item = dur不为null,我希望我的布局包括“ [xxx mS]”。否则,将不附加任何内容。如何在下面的when的内部文本中添加“ [”和“ mS]”?另外,是否应该在when的条件下使用非length()的值进行非空检测?
${message}${when:when='length(${event-properties:item=dur})'>0:inner=${event-properties:item=dur}"
如果dur为437,则日志输出为...
<message> [437 mS]
如果未设置dur,则日志输出为...
<message>
想法?
更多的试验错误导致我找到了这个解决方案...
${message}${when:when=length('${event-properties:item=dur}')>0:inner= [${event-properties:item=dur} mS]}
不仅在我最初的尝试中,单引号在错误的位置(它们位于括号内,而不在括号内),而且似乎不必转义或引号空白和/或内部布局中的方括号。将'inner ='放入输出后出现的内容。
我仍然不确定length('...')> 0是否是测试非null的最佳方法,但是在我发现更好的测试之前,它一直有效。我等待着看是否有人回答了这个问题,然后再选择“答案”答复。
也许像这样:
<nlog>
<variables>
<variable name="durationMs" value="${when::when='${event-properties:item=dur}'=='':else= \[${event-properties:dur} mS\]" />
<variable name="defaultLayout" value="${message}${durationMs}" />
</variables>
</nlog>