修改CompositeRollingAppender如何重命名文件

时间:2011-02-01 16:24:41

标签: java logging log4j

我在这里看到了很多关于log4j不同appender的问题,但似乎没有任何问题可以解决我遇到的问题。如果在任何地方重复,请道歉。

我在我们的应用中使用CompositeRollingAppender,因为我们需要根据时间和大小滚动日志文件。这与宣传的完全一样,但我们最终得到的文件如下:

myapp.log
myapp.log.2010-12-11
myapp.log.2010-12-11.1
myapp.log.2010-12-12

是否可以更改log4j重命名文件的格式?我确定必须有一个难以捉摸的财产某处我错过了。例如,在上述情况下,我想要像:

myapp.log
myapp-2010-12-11.log
myapp-2010-12-11.1.log
myapp-2010-12-12.log

这里的重点是扩展名仍为.log为什么要问?因为我们的应用程序的管理员抱怨他们不能只是双击该文件打开它(我知道,我知道)。如果他们都有.log扩展名,那就不是这样了。

提前致谢。

2 个答案:

答案 0 :(得分:0)

我认为你可以使用

<param name="FileNamePattern" value="C:\\logs\\MyApp.%d{yyyy-MM-dd}.log" />

答案 1 :(得分:0)

CompositeRollingAppender不支持您想要的功能。它在确定(启动时)是否已经有适当的日志文件要附加的方式上非常有限。它仅支持在配置的静态名称末尾添加日期和编号。

您可以尝试使用log4j extras CompositeTriggeringPolicy,但我不知道RollingPolicy将包括日期和窗口。

管理员的选择是放弃文件的大小限制,以便RollingFileAppenderTimeBasedRollingPolicy一起使用

<param name="FileNamePattern" value="MyApp.%d{yyyy-MM-W}.log" />

或使用当前名称或运行cron作业来重命名文件,但请记住,您不能重命名文件直到第二天(否则您将获得文件名冲突)。