我想设置一种方法来轻松地从包含所有日志文件中包含/排除某些日志消息。在我的代码中,我根据" Context"记录了消息。属性,然后我将在条件中包含/排除消息时使用。
这是我的设置:
<logger writeTo=""
final="true">
<filters>
<when condition="equals('${event-properties:item=Context}', 'Database')"
action="Log"/>
</filters>
</logger>
<logger name="*"
minlevel="Trace"
writeTo="default"/>
我希望我可以使用Context =&#39;数据库&#39;包含/排除任何消息。在第一个记录器中,然后将writeTo属性更改为包含消息(即writeTo =&#34;默认&#34;)或排除(即writeTo =&#34;&#34;)。
问题似乎是第一个记录器包含所有消息,并且因为final设置为true,所以不允许任何消息跟进catch all logger?只有与记录器1中的条件匹配的日志才会按预期写入,但是所有日志都已经完成&#34;最终确定&#34;通过它。
我的配置有什么问题?
答案 0 :(得分:0)
也许请尝试这样做(删除final="true"
,而是使用action="LogFinal"
)
<targets>
<target xsi:type="Null" name="BlackHole" />
</targets>
<rules>
<logger writeTo="BlackHole">
<filters>
<when condition="equals('${event-properties:item=Context}', 'Database')"
action="LogFinal"/>
</filters>
</logger>
</rules>
看起来您必须指定一个实际目标才能使自定义记录器过滤器工作(不依赖于LogLevel)。