Nlog /事件属性:如何提示NLog从最终日志条目中忽略/跳过空/空属性

时间:2019-01-08 20:05:06

标签: nlog

基本上,标题本身有点解释了我要实现的目标,但更详细:

  1. 比方说,该布局与以下XML布局类似:

    layout =“ $ {newline} ....“

  2. 现在,当将myCustomProperty1设置为'blah1'却未将myCustomProperty2添加到eventInfo.Properties集合中时,结果条目如下所示:

     ...

  3. 问题是-可以做些什么(最好在配置文件中),以便从最终呈现的结果中排除myCustomProperty2属性,因此输出如下所示:

    ...

这是陷阱-多线程使用同一记录器,因此我不能在运行时简单地更改目标的布局配置,因为它可能会对其余线程产生负面影响

预先感谢您的建议。 -K

1 个答案:

答案 0 :(得分:1)

您可以尝试使用When

  <variables>
    <variable name="var_myCustomProperty1" value="${when:when=length('${event-properties:item=myCustomProperty1}')>0:Inner= myCustomProperty1=&quot;${event-properties:item=myCustomProperty1}&quot;}"/>
    <variable name="var_myCustomProperty2" value="${when:when=length('${event-properties:item=myCustomProperty2}')>0:Inner= myCustomProperty2=&quot;${event-properties:item=myCustomProperty2}&quot;}"/>
  </variables>

  <targets>
    <target name="test" type="Console" layout="&lt;log level='${level:lowerCase=True}' time='${longdate:universalTime=true}'${var_myCustomProperty1}${var_myCustomProperty2} /&gt;" />
  </targets>

NLog 4.6将包含XmlLayout,这可能会使事情变得简单:

https://github.com/NLog/NLog/pull/2670

如果不需要xml-output(renderEmptyObject="false"),也可以使用JsonLayout