如何将log4j的输出重定向到文件?

时间:2014-03-14 15:06:54

标签: java log4j

我需要将Logger的输出重定向到文件。输出仅发送到控制台。

我使用了 log4j.propertites

的这些配置
# Set root logger level to INFO and appender to stdout.
log4j.rootLogger=INFO, stdout, file

# stdout is set to be a ConsoleAppender.
log4j.appender.stdout=org.apache.log4j.ConsoleAppender

# stdout uses PatternLayout.
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
log4j.appender.stdout.threshold=info

log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=/home/masi/logging.log
log4j.appender.file.MaxFileSize=5MB
log4j.appender.file.MaxBackupIndex=20
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%-5p [%d{dd.MM.yy HH:mm:ss}] %C{1} - %m [thread: %t]\n
log4j.appender.file.threshold=info

但是当它不起作用时,我删除了这个文件并使用了 logback.xml 而不是它。

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <layout class="ch.qos.logback.classic.PatternLayout">
        <Pattern>
            %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
        </Pattern>
    </layout>
</appender>

<appender name="FILE" class="ch.qos.logback.core.FileAppender">
    <file>/home/masi/logging.log</file>
    <layout class="ch.qos.logback.classic.PatternLayout">
        <Pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</Pattern>
    </layout>
</appender>

<logger name="test.suite" level="TRACE"/>

<root level="debug">
    <appender-ref ref="STDOUT"/>
    <appender-ref ref="FILE" />
</root>

但我仍然有一个输出到控制台。 我必须做什么样的配置来完成我的任务?

1 个答案:

答案 0 :(得分:1)

您的log4j.properites文件应该像这样配置。在log4j.logger之后指定您的包。例如,如果您的包是your.package.name,则配置将如下所示

log4j.logger.your.package.name=INFO, LOG_FILE

log4j.appender.LOG_FILE = org.apache.log4j.RollingFileAppender
log4j.appender.LOG_FILE.MaxBackupIndex=5
log4j.appender.LOG_FILE.MaxFileSize=100MB
log4j.appender.LOG_FILE.File = C:/logs/log_file.log
log4j.appender.LOG_FILE.Append = true
log4j.appender.LOG_FILE.layout = org.apache.log4j.PatternLayout
log4j.appender.LOG_FILE.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} %c{1} [%p] %m%n

关键是通过传递

告诉log4j文件的位置

-Dlog4j.configuration = file:/ [path_to_your_log4j.properties file]在你的JVM args中。