【发布时间】:2012-03-15 19:42:01
【问题描述】:
我的老板要求我有一个日志记录解决方案
- 所有日志文件的文件名中都有日期/时间(例如 myapp.2-28-2012.log)
- 只保留最新的日志文件。旧的日志文件被删除,因此硬盘驱动器不会耗尽空间
似乎使用 log4j 我只能获得一个或其他标准,但不能同时获得两者。使用 log4j extras TimeBasedRollingPolicy 我可以获得包含满足 1 的日期/时间的日志文件。但是,似乎没有办法让 TimeBasedRollingPolicy 删除旧的日志文件。根据这个post 不可能让 TimeBasedRollingPolicy 删除旧的日志文件
使用 log4j extras FixedWindowRollingPolicy 和 SizeBasedTriggeringPolicy 我可以让 log4j 删除除最后 10 个日志文件之外的所有文件,这样我的硬盘驱动器就不会用完空间,填满 2。但是我无法获得这个解决方案来放置日期/time 在文件名中。有了这个配置
def myAppAppender = new org.apache.log4j.rolling.RollingFileAppender(name: 'myApp', layout: pattern(conversionPattern: "%m%n"))
def rollingPolicy = new org.apache.log4j.rolling.FixedWindowRollingPolicy(fileNamePattern: '/tmp/myapp-%d{MM-dd-yyyy_HH:mm:ss}.log.%i',maxIndex:10,activeFileName: '/tmp/myapp.log')
rollingPolicy.activateOptions()
def triggeringPolicy = new org.apache.log4j.rolling.SizeBasedTriggeringPolicy(maxFileSize:10000000)
triggeringPolicy.activateOptions()
eventAppender.setRollingPolicy(rollingPolicy)
eventAppender.setTriggeringPolicy(triggeringPolicy)
滚动的日志文件不包含日期/时间。它们看起来像这样
myapp-.log.1
myapp-.log.2
...
是否可以使用 log4j 同时满足标准 1) 和 2)?我必须继承 TimeBasedRollingPolicy 吗?如果是这样,我应该重写哪些方法?
【问题讨论】:
标签: log4j