【问题标题】:In java, how to write logs to a specific file appender of log4j?在java中,如何将日志写入log4j的特定文件appender?
【发布时间】:2015-10-25 16:22:09
【问题描述】:

如果一个 log4j 属性有多个文件附加器,那么在 Java 中如何确保将日志写入特定文件。

log4j.rootLogger=INFO,out 

log4j.appender.SUCCESS_FILE=org.apache.log4j.FileAppender
log4j.appender.SUCCESS_FILE.File=${dd.log.dir}/success.log

log4j.appender.VALID_FILE=org.apache.log4j.FileAppender
log4j.appender.VALID_FILE.File=${dd.log.dir}/valid_error.log

log4j.appender.TEMP_FILE=org.apache.log4j.FileAppender
log4j.appender.TEMP_FILE.File=${dd.log.dir}/Temp_error.tmp_log

在 Java 类中,我该怎么做才能将一些消息写入 SUCCESS_FILE 和一些消息到 TEMP_FILE

Logger log = Logger.getLogger(Test.class);
log.debug("This message should go to SUCCESS_FILE");
log.debug("This message should go to TEMP_FILE");

【问题讨论】:

标签: java logging log4j


【解决方案1】:

这可能会有所帮助:-

log4j.appender.successLog=org.apache.log4j.FileAppender
log4j.appender.successLog.File=${dd.log.dir}/success.log

log4j.appender.tempLog=org.apache.log4j.FileAppender
log4j.appender.tempLog.File=${dd.log.dir}/Temp_error.tmp_log

log4j.category.successLogger=INFO, successLog
log4j.additivity.successLogger=false

log4j.category.tempLogger=INFO, tempLog
log4j.additivity.tempLogger=false

像这样访问它们:-

static final Logger successLog = Logger.getLogger("successLogger");
static final Logger tempLog = Logger.getLogger("tempLogger");

【讨论】:

  • 感谢您的回答 :) 我刚刚发现我们可以使用 'log4j.logger.xx=INFO,fileAppenderName 而不是 'log4j.category.xx' 和 'log4j.additivity.xx' ' 并使用您提到的相同方式访问记录器。
【解决方案2】:

使用像@Nio这样的XML配置回答是:

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

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

    <appender name="successLog" class="org.apache.log4j.FileAppender">
        <param name="file" value="${dd.log.dir}/success.log" />
        <param name="append" value="false" />
        <param name="Threshold" value="INFO" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="[%p] %d %c %M - %m%n" />
        </layout>
    </appender>

    <appender name="tempLog" class="org.apache.log4j.FileAppender">
        <param name="file" value="${dd.log.dir}/Temp_error.tmp_log" />
        <param name="append" value="false" />
        <param name="append" value="false" />
        <param name="Threshold" value="INFO" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="[%p] %d %c %M - %m%n" />
        </layout>
    </appender>

    <logger name="successLogger" additivity="false">
        <level value="INFO"/>
        <appender-ref ref="successLog"/>
    </logger>

    <logger name="tempLogger" additivity="false">
        <level value="INFO"/>
        <appender-ref ref="tempLog"/>
    </logger> 

</log4j:configuration>

【讨论】:

    【解决方案3】:

    这是我用来写入基于 2 个附加程序的 2 个日志文件的内容。这也写入控制台。

    log4j.properties 文件和 java 代码可用Here

    # Root logger option
    log4j.rootLogger=ALL,STDOUT,debugLog
    log4j.logger.reportsLogger=INFO,reportsLog
    log4j.additivity.reportsLogger=false
    
    log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender
    log4j.appender.STDOUT.layout=org.apache.log4j.PatternLayout
    log4j.appender.STDOUT.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %C:%L - %m%n
    
    
    # Direct log messages to a log file
    log4j.appender.debugLog=org.apache.log4j.RollingFileAppender
    log4j.appender.debugLog.File="/Users/test/debuglog.log"
    log4j.appender.debugLog.MaxFileSize=10MB
    log4j.appender.debugLog.MaxBackupIndex=10
    log4j.appender.debugLog.layout=org.apache.log4j.PatternLayout
    log4j.appender.debugLog.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %C:%L - %m%n
    
    # Direct log messages to a log file
    log4j.appender.reportsLog=org.apache.log4j.RollingFileAppender
    log4j.appender.reportsLog.File="/Users/test/reportslog.log"
    log4j.appender.reportsLog.MaxFileSize=10MB
    log4j.appender.reportsLog.MaxBackupIndex=10
    log4j.appender.reportsLog.layout=org.apache.log4j.PatternLayout
    log4j.appender.reportsLog.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %C:%L - %m%n
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-02
      • 2015-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多