java - log4j:与 appender 阈值不同的类别优先级

标签 java jboss log4j

我一直在尝试让这个简单的用例工作但不能:在 FILE Appender 上定义默认的 INFO 阈值,但定义具有 DEBUG 级别的类别。这是我使用的 jboss 4.2.1.GA log4j.xml 文件,我只想记录 java.sql 调用。

   <appender name="SQL_FILE" class="org.jboss.logging.appender.DailyRollingFileAppender">
      <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
      <param name="File" value="${jboss.server.log.dir}/sql.log"/>
      <param name="Append" value="false"/>
      <param name="Threshold" value="INFO"/>

      <param name="DatePattern" value="'.'yyyy-MM-dd"/>

      <layout class="org.apache.log4j.PatternLayout">
         <param name="ConversionPattern" value="%d %-5p [%c] %C %m%n"/>
      </layout>
   </appender>

  <category name="java.sql">
    <priority value="DEBUG"/>
    <appender-ref ref="SQL_FILE"/>
  </category>

   <root>
      <appender-ref ref="SQL_FILE"/>
   </root>

它不只记录 java.sql,而是记录 INFO 及以上信息,不包括任何 java.sql 信息。如果没有简单的解决方案,那么我只能将 appender Threshold 设置为 DEBUG 并关闭包含的多个类别的所有日志记录,这似乎是在浪费时间。

我尝试了以下但无法正常工作:Configuring multiple log files in log4j while using categories .

最佳答案

我很快找到了解决方案。基本上,这里的 jboss wiki 中描述了用例:http://docs.jboss.org/process-guide/en/html/logging.html 第 10.3.5 节重定向类别输出。这篇博客文章也很有帮助:ptth://ourcraft.wordpress.com/2008/10/23/customizing-log4j-logging-on-jboss/#comment-796。

最终这是我使用的有效方法:

   <appender name="SQL_FILE" class="org.jboss.logging.appender.DailyRollingFileAppender">
      <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
      <param name="File" value="${jboss.server.log.dir}/sql.log"/>
      <param name="Append" value="false"/>

      <param name="DatePattern" value="'.'yyyy-MM-dd"/>

      <layout class="org.apache.log4j.PatternLayout">
         <param name="ConversionPattern" value="%d %-5p [%c] %C %m%n"/>
      </layout>

   </appender>

<category name="java.sql.Connection"  additivity="false">
    <priority value="DEBUG"/>
    <appender-ref ref="SQL_FILE"/>
</category>  

   <root>
      <appender-ref ref="CONSOLE"/>
      <appender-ref ref="FILE"/>
   </root>

请注意,您不想在根目录中定义 SQL_FILE appender;因为某些原因。那是最后一 block 。

关于java - log4j:与 appender 阈值不同的类别优先级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2314667/

相关文章:

java - 将 System.out 和 System.err 重定向到 slf4j

java - 将 ASCII 字节 [] 转换为字符串

elasticsearch - 使用log4j和ELK Stack记录错误编码的消息

java - 如何将字符串转换为多项式并对其进行加减?

java - 将 BufferedImage 转换为另一种类型

java - 这个 if/else 语句可以减少或改进吗?

deployment - JBoss5 : Cannot deploy due to java. util.zip.ZipException:打开 zip 文件时出错

java - 如何使用 IntelliJ 正确导入 Java 代码样式设置?

java - 单例注入(inject)拦截器多个实例化

java - 如何将radius添加到jboss ldap认证?