如何配置log4j以将DEBUG消息写入文件并将INFO写入控制台

时间:2016-11-02 08:56:17

标签: java log4j

如何配置log4j属性文件以将DEBUG条消息打印到文件中,只将INFO条消息打印到控制台?

这是我的属性文件:

# Root logger option
log4j.rootLogger=INFO, stdout
log4j.logger.org.hibernate.SQL=TRACE, stdout

# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.EnhancedPatternLayout
log4j.appender.stdout.layout.ConversionPattern=%-5p %d{dd-MM-yyyy HH:mm:ss,SS} %t %c{1.}: %m%n

2 个答案:

答案 0 :(得分:3)

您可以使用如下所示的log4j.properties:

# Root logger option
log4j.rootLogger=INFO, stdout, file
log4j.logger.org.hibernate.SQL=TRACE, stdout

# Direct log messages to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout..Threshold=INFO
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.EnhancedPatternLayout
log4j.appender.stdout.layout.ConversionPattern=%-5p %d{dd-MM-yyyy HH:mm:ss,SS} %t %c{1.}: %m%n

# Direct log messages to file
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.Threshold=DEBUG
log4j.appender.file.File=/var/log/logfile.log
log4j.appender.file.Append=true
log4j.appender.file.Encoding=UTF-8
log4j.appender.file.DatePattern='-'yyyy-MM-dd'.log'
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=[%d{ISO8601}] %-5p %x%m%n

通过此属性文件,log4j为每天创建新的日志文件,并使用日期保存预览日志文件。

答案 1 :(得分:2)

使用log4j xml配置的替代方法。因为我更喜欢使用xml for log4j config。也许这可能从某种程度上帮助你。

例如。

<?xml version="1.0" encoding="UTF-8"?>
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"
    debug="false">

<appender name="CONSOLE_LOG" class="org.apache.log4j.ConsoleAppender">
        <param name="Target" value="System.out" />
        <param name="Threshold" value="INFO" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c] %m%n" />
        </layout>
    </appender>
    <appender name="FILE_LOG" class="org.apache.log4j.DailyRollingFileAppender">
        <param name="file" value="${catalina.home}/logs/debug.log" />
        <param name="Threshold" value="DEBUG" />
        <param name="maxBackupIndex" value="5" />
        <param name="maxFileSize" value="1500MB" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss,SSS} |%5p| [%c] | %m%n" />
        </layout>
    </appender>

    <root>
        <appender-ref ref="CONSOLE_LOG" />
        <appender-ref ref="FILE_LOG" />
    </root>
</log4j:configuration>

因此,您的Java代码如下:

logger.debug("your debug log message");
logger.info("your info log message");

要使用log4j.properties进行配置,可能会在How can I create 2 separate log files with one log4j config file?

处重复

希望这有帮助!