任何流行的Java日志记录框架是否支持滚动文件追加器,我可以配置为每日滚动,还删除任何超过几天的日志文件?我知道我可以使用滚动文件appender和cron,但是想知道是否有人知道可以同时执行这两种操作的appender。
答案 0 :(得分:1)
事实上,如果你使用Log4J,你可以使用这个appender:
非常,非常,非常容易使用,只需下载整个班级(是,上面链接中的类代码),将其包含在您的项目中(无论你在哪里想要,您可以更改包以在项目中匹配),然后像这样配置log4j.properties文件(此文件必须在您的类路径中,例如在src / main / resources中夹):
# Define the root logger with appender file
log = log
log4j.rootLogger = TRACE, FILE
# Define the logical path where you put the class you downloaded from "blog.kimb3r.com" link (above)
log4j.appender.FILE=com.yourapp.yourpackage.log.CustodianDailyRollingFileAppender
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.conversionPattern=%m%n
log4j.appender.FILE.File=${log}/yourlogfile.log
log4j.appender.FILE.DatePattern='.'yyyy-MM-dd
# How many files you want to keep?, in this case I'm having just 15 days of files, one file per day:
log4j.appender.FILE.MaxNumberOfDays=15
# If True, the older files will be compressed into a zip file (*which will save you a lot of space on the server*)
log4j.appender.FILE.CompressBackups=true
除此之外,只需将log4j的依赖项添加到您的pom中,如下所示:
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
就是这样!
答案 1 :(得分:1)
在Log4j上工作了一段时间之后,我读到Logback已经开发并设计成Log4j的继承者了,我不得不说,Logback是一个广泛的步进器!
例如,要配置此滚动文件Appender,并压缩旧日志,最多30个,在Log4J上您必须执行一些代码更改(请查看我的预览answer以获取更多详细信息) ,但是在logback上,一切都在配置文件上完成,如下所示:
<configuration>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>log/logFile.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- daily rollover -->
<fileNamePattern>log/logFile.%d{yyyy-MM-dd}.log.zip</fileNamePattern>
<!-- keep 30 days' worth of history -->
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>[%-5level]: [%logger{35}] - %msg%n</pattern>
</encoder>
</appender>
<root level="trace">
<appender-ref ref="FILE" />
</root>
</configuration>
就是这样,你将解压当前的日志,以及每天拉链,每天一个zip文件。
比log4j更容易!
如果您想使用更多配置选项,请查看this link。
答案 2 :(得分:0)
为什么不看this可能有帮助?
您可以设置最大nuber天数来保留日志。
log4j.rootLogger = INFO,FILE
log4j.appender.FILE = ca.justtechnologies.utils.logging.CustodianDailyRollingFileAppender log4j.appender.FILE.layout = org.apache.log4j.PatternLayout log4j.appender.FILE.layout.ConversionPattern =%d {MMM dd yyyy HH:mm:ss,SSS} [%t]%-5p%l - %m%n log4j.appender.FILE.File =在/ var /日志/ Web的应用程序/ Dashboard.log log4j.appender.FILE.DatePattern ='。'yyyy-MM-dd<强> log4j.appender.FILE.MaxNumberOfDays = 14 强>
log4j.appender.FILE.CompressBackups =真
答案 3 :(得分:0)
Logback的经典RollingFileAppender提供了此功能。手册(http://logback.qos.ch/manual/appenders.html#onRollingPolicies)
中的示例配置 <configuration>
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>logFile.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- daily rollover -->
<fileNamePattern>logFile.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- keep 30 days' worth of history -->
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
</encoder>
</appender>
<root level="DEBUG">
<appender-ref ref="FILE" />
</root>
</configuration>
这提供每日翻转和30天的历史记录。将其放在名为logback.xml的文件中,或者将测试树放在logback-test.xml中,并将其放在类路径中。