我正在尝试使用RollingRandomAccessFile设置log4j。我把它设置为在超过20兆字节时翻转,并在它启动时滚动上次运行时遗留的内容。基于大小的策略工作正常,但我不能让它对启动策略做任何事情。我已经尝试过使用JSON和XML进行配置,并且无法使用它。甚至尝试通过调用
以编程方式触发它((RollingRandomAccessFileAppender)LoggerContext.getContext(false).getConfiguration().getAppender("LOGFILE")).getManager().rollover();
什么都不做。我将状态记录器设置为输出所有内容,并且在启动期间没有弹出消息,表明它甚至试图将日志文件翻转过来。使用前面提到的编程方法时,它会输出一条消息,说明它将文件重命名为压缩前应该使用的相应名称,但是没有创建此类文件,也没有提及或创建压缩文件。这是JSON中appender的配置:
"RollingRandomAccessFile": {
"name": "LOGFILE",
"append": "false",
"fileName": "ServerData/logs/latest.log",
"filePattern": "ServerData/logs/$${date:dd-MM-YYYY_(EEE)_HH-mm-ss-SSS(z)}.log.gz",
"PatternLayout": {
"pattern": "$${date:dd-MM-YYYY (EEE)::HH:mm:ss.SSS(z)}: [%t] %-5level %logger{36}: %m%n"
},
"Policies": {
"OnStartupTriggeringPolicy": {},
"SizeBasedTriggeringPolicy": {"size": "20MB"}
}
}