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

标签 java log4j logging

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

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

最佳答案

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

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

示例 here .

关于java - 在 log4j 中根据日志记录级别创建不同的日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10105184/

相关文章:

regex - 如何从 logstash 中删除事件?

java - 如果我有一个单独的棋子类和一个单独的棋盘类,当它们彼此分离时,我如何告诉棋子移动?

java - 指定单向 @OneToOne JPA 映射的所有者

java - 与通过Python执行Java程序相关

java - 将 SimpleStringProperty 转换为字符串?

java - 找不到log4j2配置文件

java - Spring JDBC 调试日志未显示在控制台上

thread-safety - log4j 线程安全吗?

c++ - C++ 中是否有类似于 ruby​​ 的 set_trace_function 的工具?

php - 使用没有数据库包装器的 PHP 记录 mysql 查询