【发布时间】:2017-01-14 18:04:14
【问题描述】:
我在 Spring MCV 应用程序中使用 log4j,我需要每天拆分日志文件,但需要将旧文件保留 2 天,之后需要存档文件。我怎样才能做到这一点? 我的配置如下,
<Appenders>
<File name="INBOUND-ERROR" fileName="${log-path}/inbound-errors.log" append="false">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}.%M() :line%L - %m%n"/>
</File>
<File name="OUTBOUND-ERROR" fileName="${log-path}/outbound-errors.log" append="false">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}.%M() :line%L - %m%n"/>
</File>
<File name="ENCRYPTIONDECRYPTION-ERROR" fileName="${log-path}/encryptiondecryption-errors.log" append="false">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}.%M() :line%L - %m%n"/>
</File>
<Console name="STDOUT" target="SYSTEM_OUT">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}.%M() :line%L - %m%n"/>
</Console>
<File name="INBOUND-ADMIN" fileName="${log-path}/inbound-admin.log" append="false">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}.%M() :line%L - %m%n"/>
</File>
<File name="OUTBOUND-ADMIN" fileName="${log-path}/outbound-admin.log" append="false">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}.%M() :line%L - %m%n"/>
</File>
<RollingFile name="RollingFile-Inbound-Appender"
fileName="${log-path}/inbound.log"
filePattern="${archive}/inbound.log.%d{yyyy-MM-dd}.%i.log.gz">
<PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}.%M() :line%L - %m%n"/>
<Policies>
<TimeBasedTriggeringPolicy/>
<SizeBasedTriggeringPolicy size="300 MB"/>
</Policies>
<DefaultRolloverStrategy max="300000"/>
</RollingFile>
<RollingFile name="RollingFile-Outbound-Appender"
fileName="${log-path}/outbound.log"
filePattern="${archive}/outbound.log.%d{yyyy-MM-dd}.%i.log.gz">
<PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}.%M() :line%L - %m%n"/>
<Policies>
<TimeBasedTriggeringPolicy/>
<SizeBasedTriggeringPolicy size="300 MB"/>
</Policies>
<DefaultRolloverStrategy max="300000"/>
</RollingFile>
</Appenders>
【问题讨论】:
-
不确定这是否可以通过仅 log4j 的方式实现。你在什么操作系统上?也许您可以编写一个批处理脚本、Powershell 脚本或 bash 脚本,通过 cron 或 windows 任务调度程序每天(或晚上)运行一次以归档“旧”文件。
-
@Fildor,我用的是centos
标签: java spring log4j2 centos6