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
正常輸出,成功。