我想以这样一种方式在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
除外消息中。
有人可以
答案 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"/>