我们在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 "%r" %s %b" />
从我读过的内容来看,Tomcat中没有OOTB方法来清理旧的日志文件。我可以实现什么来清理旧的访问日志文件?
答案 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 "%r" %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/>