如何使用log4j写入文本文件?

2022-09-01 20:28:10

我想知道如何将以下代码转换为将这些行输出为文本文件,而不是标准输出:

import org.apache.log4j.Logger; import org.apache.log4j.PropertyConfigurator;

public class HelloWorld {

    static final Logger logger = Logger.getLogger(HelloWorld.class);

    public static void main(String[] args) {
        PropertyConfigurator.configure("log4j.properties");
        logger.debug("Sample debug message");
        logger.info("Sample info message");
        logger.warn("Sample warn message");
        logger.error("Sample error message");
        logger.fatal("Sample fatal message");
    }
}

属性文件为:

log4j.rootLogger=DEBUG, CA
log4j.appender.CA=org.apache.log4j.ConsoleAppender
log4j.appender.CA.layout=org.apache.log4j.PatternLayout
log4j.appender.FA.layout.ConversionPattern=%m%n

谢谢。


答案 1

将控制台应用程序更改为文件应用程序。

我发现这是有用的。如果使用此选项,则必须为文件名添加一个属性,并且可能还需要设置 maxFileSize。下面是一个示例(将这些放在 log4j.properties 文件中):org.apache.log4j.RollingFileAppender

log4j.appender.NotConsole=org.apache.log4j.RollingFileAppender
log4j.appender.NotConsole.fileName=/some/path/to/a/fileName.log
log4j.appender.NotConsole.maxFileSize=20MB

还有其他附加物。 基于时间的滚动。 不滚动。如果使用 ,则需要猜测 maxFileSize 的值是否合适,然后在将来的大小(如果它引起问题)进行处理。DailyRollingFileAppenderFileAppenderRollingFileAppender


答案 2

請快速使用 FileAppender 而不是 ConsoleAppender。

下面是一个简单的配置示例。它还配置布局。您可以在第一种方法中省略它。

log4j.appender.F=org.apache.log4j.FileAppender
log4j.appender.F.File=mylog.log
log4j.appender.F.layout=org.apache.log4j.PatternLayout
log4j.appender.F.layout.ConversionPattern=%d{MM-dd@HH:mm:ss} %-5p (%13F:%L) %3x - %m%n