【问题标题】:How to rotate tomcat logs in Windows? What is the best method?如何在 Windows 中轮换 tomcat 日志?最好的方法是什么?
【发布时间】:2011-12-26 03:59:34
【问题描述】:

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

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

目前尝试过的方法:

  1. cronolog 不起作用,设置后没有创建文件。

  2. 设法为 Tomcat 全局配置 log4jDailyRollingFile 附加程序,创建的日志文件没有扩展名,也没有轮换。

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

  4. 尝试基于Windows Event Log appenderlog4jna for log4j,没有成功

请提出一个简单的方法来完成这项任务。

【问题讨论】:

  • 仅供参考:OP 自己回答了这个问题。 See below。 -- @Raghu:请考虑在您自己的答案上打上绿色的“已接受答案”复选标记,以表示它对您有用。

标签: windows tomcat rotation logging


【解决方案1】:

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

【讨论】:

  • 感谢您花时间给我写这么详细的回复。您正在从完全不同的角度处理问题。我不确定这是否能解决我的问题。但是到目前为止,我已经设法通过 log4j 中的 dailyrollingfile appender 配置日志轮换
  • 即使在成功配置 dailyrollingfile 附加程序之后,仍然没有轮换日志。我认为 log4j 在 Windows 中被 Tomcat 使用时无法重命名文件。请建议我其他选择
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    我一直在寻找如何轮换 Access Valve 日志。根据我迄今为止收集的任何数据,“旋转”会根据您设置的 fileDateFormat 值简单地切换到下一个文件。

    例如“yyyy-MM-dd.HH”的值将每小时创建一个新文件。但是,除非您使用诸如 cron 作业(在 linux 中)之类的外部机制来清理它们,否则这些文件的数量似乎会继续增长。

    【讨论】:

      猜你喜欢
      • 2013-02-17
      • 2012-09-12
      • 2023-03-21
      • 2019-12-30
      • 2010-09-08
      • 2018-06-30
      • 1970-01-01
      • 1970-01-01
      • 2010-12-02
      相关资源
      最近更新 更多