1. 程式人生 > >Tomcat catalina.out日誌超大問題,與開啟檢視 檢視控制檯失敗

Tomcat catalina.out日誌超大問題,與開啟檢視 檢視控制檯失敗

一、開啟超大日誌檔案,檢視日誌

一線反饋應用出現故障,不能處理下發的任務。獲取應用日誌後發現可疑的任務多執行緒處理部分,異常捕獲的不好。如果出現RuntimeException異常,將不會記錄在系統日誌中。

叫一線取下catalina.out日誌檔案,如果有未捕獲的RuntimeException異常則會記錄在這個檔案中。

一看,檔案達5G多。本機打不開。在Solaris使用vi命令,報記憶體不足(打開了也翻不到那天的日誌,會翻死)。

使用tail -10000 catalina.out > Eponlog.log
1w行可以,但離需要的日期的部分還很遠。試了試10W行,不行。

沒轍了嗎?打不開這日誌,那問題怎麼定位解決啊。
想到還有個分割檔案的命令,試一試。

split -b 200M catalina.out -- 每個檔案200M

結果可以檢視日誌了。問題很快定位。


二、解決catalina.out日誌超大問題
接下來考慮catalina.out怎麼會這麼大呢?檢視裡面記錄了應用的所有日誌資訊。

檢視應用的log4j配置檔案,發現輸出到控制檯的配置,target是System.out

而catalina.out會記錄 System.out 與 System.err的資訊

刪除log4j中的輸出控制檯的日誌配置,catalina.out中不再記錄應用的日誌。

這下它不會漲的那麼快了。

命令tail——檢視檔案詳細資訊 

    tail -f aaa.txt          看aaa.txt檔案的詳細資訊 

    tail -n x aaa.log           x:最後幾行 

tail  -f  SystemOut.log 

# tail -f ../logs/catalina.out
tail: cannot watch `../logs/catalina.out': No space left on device

df -h 檢視有剩餘空間
df -i 檢視inode也有剩餘空間

最終解決:
# vim /etc/sysctl.conf
新增以下:
fs.inotify.max_user_watches = 32768

生效:
# sysctl -p /etc/sysctl.conf

再次測試
# tail ../logs/catalina.out

正常輸出,成功。