Ale*_*lex 8 logging log4net log4net-configuration log4net-filter
我想创建一个仅针对特定级别记录的appender,仅针对特定记录器.从我所看到的,基于本教程,过滤器是ORed在一起.我如何和log4net一起过滤?这是我正在做的一个例子:
<appender name="MyAppender">
<!--log only INFO level-->
<filter type="log4net.Filter.LevelMatchFilter">
<levelToMatch value="INFO" />
</filter>
<!--log only UserController logger-->
<filter type="log4net.Filter.LoggerMatchFilter">
<loggerToMatch value="MyLogger" />
</filter>
<!-- do not log anything else -->
<filter type="log4net.Filter.DenyAllFilter" />
</appender>
Run Code Online (Sandbox Code Playgroud)
你可以写一个自定义的AndFilter,这很容易.您可以使用此处发布的代码 - /sf/answers/620132621/
用法如下:
<filter type="Namespace.AndFilter, Assembly">
<!--log only INFO level-->
<filter type="log4net.Filter.LevelMatchFilter">
<levelToMatch value="INFO" />
</filter>
<!--log only UserController logger-->
<filter type="log4net.Filter.LoggerMatchFilter">
<loggerToMatch value="MyLogger" />
</filter>
<acceptOnMatch value="true"/>
</filter>
<!-- do not log anything else -->
<filter type="log4net.Filter.DenyAllFilter" />
Run Code Online (Sandbox Code Playgroud)
您可以使用ForwardingAppender(请参阅Config示例)并将一个过滤器放在那里,另一个放在目标appender中(或者随意链接它们).
<appender name="FilterOnlyInfo" type="log4net.Appender.ForwardingAppender">
<!--log only INFO level-->
<filter type="log4net.Filter.LevelMatchFilter">
<levelToMatch value="INFO" />
</filter>
<appender-ref ref="FinalAppender" />
</appender>
<appender name="FinalAppender">
<!--log only UserController logger-->
<filter type="log4net.Filter.LoggerMatchFilter">
<loggerToMatch value="MyLogger" />
</filter>
</appender>
Run Code Online (Sandbox Code Playgroud)
我相信这个appender可能在问题发生时可能不是log4net的一部分.