我真的厌倦了在我们的Windows服务器中放入无数小时后和尝试各种解决方案后无法解决tomcat日志轮换问题。
到目前为止尝试的方法:
cronolog
无效,设置后无法创建文件。
管理为Tomcat全局配置log4j
appender,日志文件正在创建,没有扩展名,也没有被轮换。
也试过DailyRollingFile
,但没有取得多大成功。
基于DatedFileAppender
log4jna
尝试了log4j,但未获得成功
请建议一种简单的方法来完成此任务。
答案 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中)的外部机制来清理它们。