java - log4j 不记录信息级别

标签 java log4j

当我运行我的应用程序时,log4j.xml 文件中有以下内容。控制台中仅打印错误日志,不打印信息日志。但是如果我注释掉 jdbcAppender 部分并仅使用

我希望打印错误和信息,同时需要将错误日志插入到数据库表错误中。

我该怎么做?

问候

<appender name="jdbcAppender" class="bean.CustomJdbcAppender"> 
        <param name = "jndiDataSource" value="myjdbcDS"/>        
        <layout class="org.apache.log4j.PatternLayout"> 
            <param name="ConversionPattern" 
              value="INSERT INTO errors (log_level, location, message) VALUES ( '%p',
              '%C;%L', '%m' )" 
            /> 
        </layout> 
    </appender>
    <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender"> 
        <layout class="org.apache.log4j.PatternLayout"> 
            <param name="ConversionPattern" 
              value="%d{ISO8601} %p (%C;%L) %m%n" 
            /> 
        </layout> 
    </appender> 
    <category name="bean"><priority value="error"/>
    <appender-ref ref="jdbcAppender"/> 
    </category>
    <root> 
        <priority value="info"/> 
        <appender-ref ref="STDOUT"/> 
    </root> 

最佳答案

从记录器 bean 中删除 ERROR 优先级,以便其日志记录级别继承自根记录器(设置为 INFO 级别)。然后,来自此记录器的任何级别大于或等于 INFO 的日志记录事件都可以被拦截并转发到 jdbcAppender 和 STDOUT 。

  <category name="bean">
    <appender-ref ref="jdbcAppender"/> 
  </category>

要限制 jdbcAppender 只能实际记录 ERROR 级别事件,请在 jdbcAppender 上应用并配置 LevelMatchFilterDenyAllFilter

<appender name="jdbcAppender" class="bean.CustomJdbcAppender"> 
        <param name = "jndiDataSource" value="myjdbcDS"/>        
        <layout class="org.apache.log4j.PatternLayout"> 
           <param name="ConversionPattern" value="INSERT INTO errors (log_level, location, message) VALUES ( '%p','%C;%L', '%m' )"  /> 
        </layout> 
        <filter class="org.apache.log4j.varia.LevelMatchFilter">
                  <param name="LevelToMatch" value="error" />
                  <param name="AcceptOnMatch" value="true"/>
        </filter>
        <filter class="org.apache.log4j.varia.DenyAllFilter" />
 </appender>

关于java - log4j 不记录信息级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9578476/

相关文章:

java - 如何让 log4j 在启动时清除日志?

java - 在运行时更改 log4j 属性文件导致创建一个空的默认日志

java - 将 log4j JMSAppender 与 ActiveMQ 一起使用 - 调试级别中的有线格式超时(客户端)

java - 如何从 Java 类访问 maven -Dexec.args 参数

java - 从 Proto 转换为 XSD

java - 无法为实现 Spring Security UserDetails 的类加载请求的类异常

java - Volley jsonArray 传递

java - 每天滚动更新日志文件,无论是否记录任何消息

java - 同一台机器上具有相同证书的两个服务之间的相互认证

java - 为 JBoss 的 log4j 中的所有日志输出指定日志级别