我想配置 log4j2.properties 文件,让我的 swapi.log 条目删除所有以前写入的日志,例如,如果我们要删除最多 30 个条目的日志条目,一旦达到 30 个,它就会自动删除。因为我们不占用服务器内存。
所以,到目前为止,我尝试了如下所示的方法,它在控制台中工作正常并附加在日志文件中。但我很难弄清楚如何删除所有以前的日志条目。任何帮助将不胜感激。
name=PropertiesConfig
appenders = console, file
appender.console.type = Console
appender.console.name = STDOUT
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
appender.file.type = File
appender.file.name = LOGFILE
appender.file.fileName=C:\\SWAPILogs\\swapi.log
appender.file.layout.type=PatternLayout
appender.file.layout.pattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
loggers=file
logger.file.name=com.gds.service
logger.file.level = debug
logger.file.appenderRefs = file
logger.file.appenderRef.file.ref = LOGFILE
rootLogger.level = debug
rootLogger.appenderRefs = STDOUT
rootLogger.appenderRef.stdout.ref = STDOUT
正如 Nitesh 在评论中所说的那样,要轮换日志文件,您需要使用 RollingFileAppender
max="30"
、上设置
DefaultRolloverStrategy
filePattern
,的
%i
TriggeringPolicy
,它会告诉附加程序何时必须滚动。
<RollingFile
name="LOGFILE"
fileName="C:\SWAPILogs\swapi.log"
filePattern="C:\SWAPILogs\swapi-%i.log">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />
<SizeBasedTriggeringPolicy size="10 MB" />
<DefaultRolloverStrategy
fileIndex="min"
max="30" />
</RollingFile>
您使用的属性配置格式要详细得多,但可以轻松地从 XML 格式导出:某个组件的所有属性共享相同的前缀,并使用 <component prefix>.<property name>
指定。所有子组件都使用前缀
<parent component's prefix>.<component id>
,其中
<component id>
是任意选择的标识符。每个组件必须有一个属性
<component prefix>.type
反映 XML 配置中的标签名称。上面的配置可以翻译为:
appender.file.type = RollingFile
appender.file.name = LOGFILE
appender.file.fileName=C:\\SWAPILogs\\swapi.log
appender.file.filePattern=C:\\SWAPILogs\\swapi-%i.log
appender.file.layout.type=PatternLayout
appender.file.layout.pattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
appender.file.policy.type=SizeBasedTriggeringPolicy
appender.file.policy.size=10 MB
appender.file.strategy.type=DefaultRolloverStrategy
appender.file.strategy.fileIndex=min
appender.file.strategy.max=30