如何在Windows系统中旋转Tomcat日志?最佳方法是什么?

8

经过无数的尝试后,我真的厌倦了在我们的Windows服务器上无法解决Tomcat日志轮换问题。

  • 环境:Java 1.6x,Tomcat 6(以服务方式运行),log4j 1.2,Server 2003 32位

到目前为止已经尝试过的方法:

  1. cronolog没有起作用,在设置完毕后没有文件被创建。

  2. 已经成功地全局配置了log4jDailyRollingFile附加程序,日志文件被创建而且没有扩展名也没有被旋转。

  3. 也尝试了DatedFileAppender,但并没有取得太大的成功。

  4. 尝试了基于Windows事件日志记录器log4jna,但没有成功。

请提供一种简单的方法来完成此任务。


FYI:OP自己回答了这个问题。请参见下面的链接:https://dev59.com/rl3Ua4cB1Zd3GeqP9RiA#15676581。-- @Raghu:请考虑在您自己的答案上放置绿色的“接受答案”复选标记,以表示它对您有用。 - StackzOfZtuff
3个回答

4
Apache Tomcat提供了配置目录“conf”,其中包含文件“server.xml”。在该文件底部,必须取消注释并更改称为“AccessLogValve”的调整阀门的行。
默认的阀门参数和模式可以通过编辑器轻松修改。例如,您对访问日志文件的设置可能如下所示:
<Valve
className="org.apache.catalina.valves.AccessLogValve."
directory="logs"
prefix="mysite."
suffix=".log"
pattern='%a %A %b %B %h %l %m %p %q %u %t "%r" %s %U %D %S'
resolveHosts="false"
rotatable="true"
fileDateFormat="yyyy-MM-dd"
/>

这句话来自Tomcat参考文档

fileDateFormat参数允许在访问日志文件名中使用定制的日期格式。日期格式还决定了文件轮换的频率。如果您希望每小时轮换一次,则将此值设置为:yyyy-MM-dd.HH


感谢您抽出时间给我写了这么详细的回复。您从完全不同的角度来解决问题。 我不确定这是否能解决我的问题。 但目前我已经通过log4j中的dailyrollingfile appender配置了日志轮换。 - Raghu GS
1
即使成功配置了dailyrollingfile appender,日志仍未被旋转。我认为log4j不能在Windows中由Tomcat使用时重命名文件。请建议我其他选项。 - Raghu GS

2

经过一段漫长的时间,我终于解决了问题。这次,我没有触及到Tomcat日志配置。我使用了一个很棒的实用程序叫做logrotatewin,它是Windows中logrotate的重新实现。我已经熟悉了logrotate,所以设置logrotatewin非常容易。为了使日志旋转正常工作,我必须在prerun中停止Tomcat,在postrun中重新启动Tomcat,因为Tomcat在运行时锁定日志文件。


0
我一直在搜寻如何旋转Access Valve日志文件。目前我所收集的数据显示,“轮换”将根据您设置的fileDateFormat值简单地切换到下一个文件。
例如,"yyyy-MM-dd.HH"的值将每小时创建一个新文件。但似乎这些文件会继续增长,除非您使用外部机制(如Linux中的cron job)来清理它们。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接