【问题标题】:Tomcat localhost_access_log files cleanupTomcat localhost_access_log 文件清理
【发布时间】:2015-10-31 09:45:32
【问题描述】:

我们在 Tomcat 8 上运行 Solr。我们在不同的环境中遇到问题,localhost_access_log 文件填满了服务器。这些文件是由 server.xml 中的 Access Valve 日志创建的,配置如下 -

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
   prefix="localhost_access_log" 
   suffix=".txt" pattern="%h %l %u %t &quot;%r&quot; %s %b" />

根据我的阅读,Tomcat 中没有 OOTB 方式来清理旧的日志文件。我可以实施什么来清理旧的访问日志文件?

【问题讨论】:

  • 可能在 tomcat 9 中

标签: tomcat logging


【解决方案1】:

您可以进行日志轮换,然后选择要删除的日志文件

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" rotatable="true" renameOnRotate="true" pattern="%h %l %u %t &quot;%r&quot; %s %b" />

由于默认情况下旋转设置为 true,因此您应该已经拥有它。然后您可以例如删除超过 5 天的日志:

要删除超过 10 天的日志文件,可以使用以下命令。

Unix
find /path/to/httplogs/ -name "*.log" -type f -mtime +10 -exec rm -f {} \;

For Windows Server OS:
forfiles /p "C:\path\to\httplogs" /s /m *.log /d -10 /c "cmd /c del @PATH"

【讨论】:

  • windows 命令效果很好!使用 . 的任何风险。 tomcat文件配置为txt后缀。
  • 怕删错文件就换通配符
【解决方案2】:

理论上您不必手动操作。在您的config/server.xml 中设置此属性,服务器会自动为您清理。

maxDays="10"

示例配置行:

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
   prefix="localhost_access_log" 
   suffix=".txt" pattern="%h %l %u %t &quot;%r&quot; %s %b"
   maxDays="10" />

然后重启你的tomcat/tomcat8/tomcat9服务。

【讨论】:

  • 请确保在 maxDays 的值周围使用双引号,即 maxDays="10",否则 Tomcat 在尝试解析该值时会抛出错误。
【解决方案3】:

您可以通过注释配置行来disablelocalhost_access 日志。

在linux中,设置每天cron job删除旧文件。

0 0 * * * /path/to/your/script/cleanup.sh

cleanup.sh

#This will remove files older than a week.
find /TOMCAT_HOME/logs -name "localhost_access_log*.txt" -type f -mtime +7 -exec rm -f {} \;

【讨论】:

  • 我实现了一个cron来删除访问日志,但问题是tomcat在重新启动之前不会释放内存。
猜你喜欢
  • 1970-01-01
  • 2015-06-18
  • 2012-04-01
  • 2012-04-13
  • 2019-09-24
  • 1970-01-01
  • 2014-10-24
  • 1970-01-01
相关资源
最近更新 更多