1

我在我的 Java 应用程序中使用 log4j。我想同时配置 maxsize(最大为 1Mb)和 15 天后自动删除。

# Root logger option
log4j.rootLogger=INFO, file

# Direct log messages to a log file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=C:\\loging.log
log4j.appender.file.MaxFileSize=1MB
log4j.appender.file.MaxBackupIndex=15
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

但似乎在 log4j 中不能同时配置我的两个要求,对吧?

我该怎么做?谢谢大家。

4

2 回答 2

1

您可以创建一个用于文件删除目的的批处理文件...批处理文件的内容如下

cd "C:\<folder-location>\
del *.log

您可以创建一个调度程序条目以每 15 天运行一次此文件...这样它将在 15 天后删除所有日志文件。(此外,使用批处理文件,您还可以创建日志文件的 zip 作为备份,并将其安全地保存在其他位置……这是您使用 log4j 根本无法做到的事情)

将文件保存为 zip 备份(使用 7-zip)

C:\Program Files\7-Zip\7z.exe a -tzip C:\B\ZipFile.zip C:\A\*.*

这会将文件夹 A 中的所有文件复制到 zip 文件中的 B 中。

保持 maxsize 已经由您在 log4j 配置文件中完成。

于 2013-04-25T11:14:17.633 回答
1

您的配置很好,要对其进行测试,请将 MaxFileSize 更改为 1KB 并运行以下代码:

public class LogTest {
    static Logger log = Logger.getLogger("LogTest");

    public static void main(String[] args)
    {
        PropertyConfigurator.configure("log4j.properties");//file should be in classpath
        for (int i = 0; i < 20000; i++)
            log.info("test");

            System.out.println("Done");

    }
}

完成后,您应该共有 16 个文件 logging.txt 和 logging.txt.1 到 logging.txt.15

于 2013-04-25T10:59:03.603 回答