过滤时根据包含的子字符串记录到不同的文件
Log to a different file depending on a contains substring when filter
我想在我的 nlog.config 中设置过滤器,如果一条消息包含子字符串并且到另一个文件(由文件目标 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
除了 带有子字符串的消息。
有人可以吗
- 解释算法如何应用这些过滤器。
- 显示正确的过滤器设置以实现我的上述目标。
您是否尝试过使用 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"/>
我想在我的 nlog.config 中设置过滤器,如果一条消息包含子字符串并且到另一个文件(由文件目标 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
除了 带有子字符串的消息。
有人可以吗
- 解释算法如何应用这些过滤器。
- 显示正确的过滤器设置以实现我的上述目标。
您是否尝试过使用 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"/>