Tomcat

Tomcat 6 HTTP 日誌滾動和清除

  • August 2, 2012

我們在 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使用舊文件而不是刪除它們,以防它們以後證明有用。

引用自:https://serverfault.com/questions/36554