NLog - 使用 final/blackhole 的过滤器
NLog - filters working with final/blackhole
我想设置一种方法来轻松地 include/exclude 从一个包罗万象的日志文件中提取某些日志消息。在我的整个代码中,我已经根据 "Context" 属性 记录了消息,然后我将在 include/exclude 消息的条件下使用它。
这是我的设置:
<logger writeTo=""
final="true">
<filters>
<when condition="equals('${event-properties:item=Context}', 'Database')"
action="Log"/>
</filters>
</logger>
<logger name="*"
minlevel="Trace"
writeTo="default"/>
我希望我可以 include/exclude 在第一个记录器中使用 Context='Database' 的任何消息,然后更改 writeTo 属性以包含消息(即 writeTo="default" ) 或排除(即 writeTo="").
问题似乎是第一个记录器包含了所有消息,并且由于 final 设置为 true,不允许任何消息跟随到捕获所有记录器?只有符合记录器中条件的日志才会按预期写入,但是所有日志都被它 "finalized"。
对我的配置有什么问题有什么想法吗?
也许试试这个(删除 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)。
我想设置一种方法来轻松地 include/exclude 从一个包罗万象的日志文件中提取某些日志消息。在我的整个代码中,我已经根据 "Context" 属性 记录了消息,然后我将在 include/exclude 消息的条件下使用它。
这是我的设置:
<logger writeTo=""
final="true">
<filters>
<when condition="equals('${event-properties:item=Context}', 'Database')"
action="Log"/>
</filters>
</logger>
<logger name="*"
minlevel="Trace"
writeTo="default"/>
我希望我可以 include/exclude 在第一个记录器中使用 Context='Database' 的任何消息,然后更改 writeTo 属性以包含消息(即 writeTo="default" ) 或排除(即 writeTo="").
问题似乎是第一个记录器包含了所有消息,并且由于 final 设置为 true,不允许任何消息跟随到捕获所有记录器?只有符合记录器中条件的日志才会按预期写入,但是所有日志都被它 "finalized"。
对我的配置有什么问题有什么想法吗?
也许试试这个(删除 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)。