根据log4j中的日志记录级别创建不同的日志

Roh*_*sal 5 java logging log4j

我试图根据不同的级别创建"不同的"appender但到目前为止我找不到隔离日志级别的方法....

<category name="com.sample" additivity="false">
    <priority value="INFO" />
    <appender-ref ref="AllAsync"/> 
    <appender-ref ref="ConsoleAppender"/> 
  </category>
Run Code Online (Sandbox Code Playgroud)

我需要一种能够仅添加INFO优先级日志的方法.由于INFO级别的日志记录也会使用DEBUG标记的记录器...这对我没有帮助.

另一件事是'同一'包我无法定义不同的日志记录appender:

     <category name="com.sample" additivity="false">
            <priority value="INFO" />
            <appender-ref ref="AllAsync"/> 
            <appender-ref ref="ConsoleAppender"/> 
          </category>

     <category name="com.sample" additivity="false">
        <priority value="DEBUG" />
        <appender-ref ref="AllAsync"/> 
        <appender-ref ref="ConsoleAppender"/> 
      </category>
Run Code Online (Sandbox Code Playgroud)

在这里我得到的错误类似于:

log4j:ERROR Attempted to append to closed appender named [AllAsync].
log4j:ERROR Attempted to append to closed appender named [ConsoleAppender].
log4j:ERROR Attempted to append to closed appender named [ConsoleAppender].
log4j:ERROR Attempted to append to closed appender named [ConsoleAppender].
Run Code Online (Sandbox Code Playgroud)

小智 2

您可以根据 log4j Faq 和 wiki 使用 LevelMatchFilter 按精确的日志级别进行过滤。

 <filter class="org.apache.log4j.varia.LevelMatchFilter">
         <param name="LevelToMatch" value="info"/> 
         <param name="AcceptOnMatch" value="true"/>  
 </filter>
Run Code Online (Sandbox Code Playgroud)

例子在这里