Tomcat localhost_access_log文件清理

时间:2015-08-07 20:44:09

标签: tomcat logging

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

<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方法来清理旧的日志文件。我可以实现什么来清理旧的访问日志文件?

3 个答案:

答案 0 :(得分:6)

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

<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"

答案 1 :(得分:2)

您可以通过注释配置行来disable localhost_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 {} \;

答案 2 :(得分:1)

您不必手动进行。设置此属性,服务器将自动为您清除

maxDays=10

示例配置

 <Valve className="org.apache.catalina.valves.AccessLogValve" directory="/my-filer/logs"
               prefix="access-" suffix=".log" resolveHosts="false" 
               pattern="%t %{X-Forwarded-For}i %l %u %r %s %b %D %{Referer}i %{User-agent}i" 
               fileDateFormat="yyyy-MM-dd" maxDays=10/>