如何在Windows中旋转tomcat日志?什么是最好的方法?

时间:2011-11-10 13:04:25

标签: windows tomcat rotation logging

我真的厌倦了在我们的Windows服务器中放入无数小时后和尝试各种解决方案后无法解决tomcat日志轮换问题。

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

到目前为止尝试的方法:

  1. cronolog无效,设置后无法创建文件。

  2. 管理为Tomcat全局配置log4j appender,日志文件正在创建,没有扩展名,也没有被轮换。

  3. 也试过DailyRollingFile,但没有取得多大成功。

  4. 基于DatedFileAppender log4jna尝试了log4j,但未获得成功

  5. 请建议一种简单的方法来完成此任务。

3 个答案:

答案 0 :(得分: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 reference

  

fileDateFormat 参数允许使用自定义日期格式   访问日志文件名。日期格式还决定文件的频率   旋转。如果您希望每小时旋转一次,请将此值设置为:    YYYY-MM-DD.HH

答案 1 :(得分:1)

经过长时间的努力,我终于解决了这个问题。这次,我还没有触及tomcat日志配置。我使用了一个名为logrotatewin的奇妙实用程序,它是Windows中logrotate的重新实现。我已经熟悉logrotate了,所以设置logrotatewin是一件容易的事。我必须在prerun中停止tomcat并在postrun中启动它以使日志轮换工作,因为tomcat在日志文件运行时将其锁定。

答案 2 :(得分:0)

我一直在搜索如何旋转Access Valve日志。根据我迄今为止收集的数据,“轮换”将根据您设置的fileDateFormat值切换到下一个文件。

例如值“yyyy-MM-dd.HH”将每小时创建一个新文件。但似乎文件将继续增长,除非您使用像cron作业(在Linux中)的外部机制来清理它们。