过滤时根据包含的子字符串登录到其他文件

时间:2019-05-20 17:38:12

标签: nlog

我想以这样一种方式在nlog.config中设置过滤器:如果一条消息包含一个子字符串,则日志条目应转到一个文件(由文件目标domainTarget定义),而到另一个文件(如果不是,则由文件目标technicalTarget定义。

以另一种方式输入:domainTarget中包含的任何内容(无论其规则多么复杂)都永远不会出现在technicalTarget中。

这是我尝试过的:

<rules>
    <logger name="*" minlevel="Trace" writeTo="domainTarget">
        <filters>
            <when condition="contains('${message}', 'mysubstring')" action="LogFinal"/>
        </filters>
    </logger>
    <logger name="*" minlevel="Trace" writeTo="technicalTarget"/>
</rules>

使用这些设置,它会将所有内容记录到domainTarget。并使用子字符串将所有内容记录到technicalTarget 除外消息中。

有人可以

  1. 说明算法如何应用这些过滤器。
  2. 告诉我正确的过滤器设置以实现我的上述目标。

1 个答案:

答案 0 :(得分:2)

您是否尝试过使用NLog 4.6引入的defaultAction

<logger name="*" minlevel="Trace" writeTo="domainTarget">
  <filters defaultAction="Ignore">
    <when condition="contains('${message}', 'mysubstring')" action="LogFinal" />
  </filters>
</logger> 
<logger name="*" minlevel="Trace" writeTo="technicalTarget"/>
相关问题