【问题标题】:Creating different logs based on logging level in log4j根据 log4j 中的日志记录级别创建不同的日志
【发布时间】:2012-04-11 11:41:02
【问题描述】:

我正在尝试根据不同级别创建“不同”附加程序,但到目前为止我找不到隔离日志记录级别的方法....

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

我需要一种方法来仅登陆要附加的 INFO 优先日志。由于 INFO 级别的日志记录也会放在带有 DEBUG 标记的记录器上……这对我没有帮助。

另一件事是对于“相同”的包,我无法定义不同的日志附加程序:

     <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>

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

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].

【问题讨论】:

  • 您可以使用阈值来防止低于 X 级别的任何内容出现在日志文件中,但我认为没有办法阻止高于 X 级别的日志出现在日志文件中。

标签: java log4j logging


【解决方案1】:

您可以根据 log4j 常见问题解答和 wiki 使用 LevelMatchFilter 按确切的日志级别进行过滤。

 <filter class="org.apache.log4j.varia.LevelMatchFilter">
         <param name="LevelToMatch" value="info"/> 
         <param name="AcceptOnMatch" value="true"/>  
 </filter>

例如here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-26
    • 1970-01-01
    • 2012-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-10
    相关资源
    最近更新 更多