Tomcat
Tomcat 6 HTTP 日誌滾動和清除
我們在 Apache Tomcat 6 容器中執行我們的 Web 應用程序。我們的程式碼使用 SLF4J 和 Logback 並且滾動/清除就好了。Tomcat 日誌(catalina、stdout 等)只是在 Tomcat 服務重新啟動時被刪除。
問題是我們也在做一些 HTTP 日誌記錄。據任何人所知,它來自 Tomcat server.xml 文件中的這一行。
<Valve className="org.apache.catalina.valves.FastCommonAccessLogValve" directory="httplogs" pattern="combined" resolveHosts="false" prefix="" suffix=".log" rotatable="true" fileDateFormat="yyyy-MM-dd" />
這似乎旋轉得很好,但從不清除。有沒有辦法讓 Tomcat 自動清除它,還是我必須修改重啟腳本來清理 httplogs 目錄?
我建議使用 cron 作業 (UNIX) 或計劃任務 (Windows) 清理日誌文件。
首先確定您希望將日誌保留多長時間,1 週、1 個月、3 個月?然後每天執行一個腳本,以刪除舊日誌。在 Unix 上刪除超過 90 天的日誌文件:
find /path/to/httplogs/ -name "*.log" -type f -mtime +90 -exec rm -f {} \;
在 Windows 上可以使用類似的命令(
forfiles
僅在某些版本上可用)forfiles /p "C:\path\to\httplogs\" /s /m *.log /d -90 /c "cmd /c del @PATH"
閱讀這些命令的線上文件,並在將它們放入生產環境之前了解並測試它們正在做什麼。
如果這些日誌有一個共同的前綴,那麼您可以將其添加到搜尋遮罩中,以便更具體地刪除哪些文件。或者,我經常
gzip
使用舊文件而不是刪除它們,以防它們以後證明有用。