Java 使用log4j将不同的日志级别记录到不同的文件中

Java 使用log4j将不同的日志级别记录到不同的文件中,java,logging,log4j,Java,Logging,Log4j,我正在使用log4j来登录我的应用程序。我试图在不同的文件中创建不同级别的日志,但出现了一些问题。我们将非常感谢您对这个问题的任何帮助 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

我正在使用log4j来登录我的应用程序。我试图在不同的文件中创建不同级别的日志,但出现了一些问题。我们将非常感谢您对这个问题的任何帮助

    <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

<appender name="console" class="org.apache.log4j.ConsoleAppender"> 
    <param name="Target" value="System.out"/> 
    <layout class="org.apache.log4j.PatternLayout"> 
      <param name="ConversionPattern" value="%-5p %c{1} - %m%n"/> 
    </layout> 
</appender> 

<appender name="DEBUG" class="org.apache.log4j.RollingFileAppender">
  <param name="File" value="TCS_patch_9/log/retailer_debug.log" />
  <param name="Threshold" value="DEBUG" />
  <param name="MaxFileSize" value="2MB"/>
  <param name="MaxBackupIndex" value="3"/>
  <layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern" value="%d{ISO8601} %-5p %c - %m%n"/>
  </layout>
</appender>

<appender name="INFO" class="org.apache.log4j.RollingFileAppender">
  <param name="File" value="TCS_patch_9/log/retailer_info.log" />
  <param name="Threshold" value="INFO" />
  <param name="MaxFileSize" value="2MB"/>
  <param name="MaxBackupIndex" value="3"/>
  <layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern" value="%d{ISO8601} %-5p %c - %m%n"/>
  </layout>
</appender>
<appender name="ERROR" class="org.apache.log4j.RollingFileAppender">
  <param name="File" value="TCS_patch_9/log/retailer_error.log" />
  <param name="Threshold" value="ERROR" />
  <param name="MaxFileSize" value="2MB"/>
  <param name="MaxBackupIndex" value="3"/>
  <layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern" value="%d{ISO8601} %-5p %c - %m%n"/>
  </layout>
</appender>
<appender name="FATAL" class="org.apache.log4j.RollingFileAppender">
  <param name="File" value="TCS_patch_9/log/retailer_repeat_delay.log" />
  <param name="Threshold" value="FATAL" />
  <param name="MaxFileSize" value="2MB"/>
  <param name="MaxBackupIndex" value="3"/>
  <layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern" value="%d{ISO8601} %-5p %c - %m%n"/>
  </layout>
</appender>

  <root> 
    <priority value ="error" /> 
    <appender-ref ref="console"/> 
    <appender-ref ref="DEBUG"/> 
    <appender-ref ref="INFO"/> 
    <appender-ref ref="ERROR"/>
    <appender-ref ref="FATAL"/> 
  </root>

</log4j:configuration>

log4j appender的标准行为是,它们以阈值级别或更高级别记录所有消息,即具有阈值信息的appender将记录信息、警告、错误和致命消息,但不会进行调试。如果您只想记录信息消息,而不想记录警告及以上消息,那么


您还需要将根日志记录器优先级设置为DEBUG,否则它将只向其附加程序发送错误和致命消息,并且您的DEBUG和INFO文件将为空。

log4j附加程序的标准行为是,它们以阈值级别或更高级别记录所有消息,即具有阈值信息的附加程序将记录INFO,警告、错误和致命消息,但不调试。如果您只想记录信息消息,而不想记录警告及以上消息,那么


您还需要将根记录器优先级设置为DEBUG,否则它只会向其附加程序发送错误和致命消息,并且您的DEBUG和INFO文件将为空。

欢迎使用SO。如果我们不知道什么行为是不受欢迎的,那就很难帮助我们。谢谢JohnB和oers。实际上,问题是我试图过滤我的消息。我想在retailer_error.log中记录错误消息,在retailer_info.log中记录信息日志,以及其他类似的日志。欢迎使用SO。如果我们不知道什么行为是不受欢迎的,那就很难帮助我们。谢谢JohnB和oers。实际上,问题是我试图过滤我的消息。我想在retailer_error.log和retailer_info.log中记录错误消息,并在retailer_info.log中记录信息。这里有一个指向示例配置文件的链接:thansk@dertoni您提供的链接也帮助我:)这里有一个指向示例配置文件的链接:thansk@dertoni您提供的链接也帮助我:)