NLog:如何在内部布局中包含静态字符

问题描述 投票:2回答:2

[使用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>

想法?

c# nlog
2个回答
2
投票

更多的试验错误导致我找到了这个解决方案...

${message}${when:when=length('${event-properties:item=dur}')>0:inner= [${event-properties:item=dur} mS]}

不仅在我最初的尝试中,单引号在错误的位置(它们位于括号内,而不在括号内),而且似乎不必转义或引号空白和/或内部布局中的方括号。将'inner ='放入输出后出现的内容。

我仍然不确定length('...')> 0是否是测试非null的最佳方法,但是在我发现更好的测试之前,它一直有效。我等待着看是否有人回答了这个问题,然后再选择“答案”答复。


1
投票

也许像这样:

<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>
© www.soinside.com 2019 - 2024. All rights reserved.