清理tomcat服务器日志文件,Tomcat日志配置与清理
今天看了下tomcat日志,發現已經有8g多了... ?仔細想想大概有2年多沒有處理過日志了。因為博客線上也沒出過啥問題,所以壓根就沒怎么看過日志。畢竟不是運維 ... 這方面確實沒咋注意,服務器還是有很多需要搞清楚的 。
然后又看了下,其中最大的是catalina.out,占了7.8G,emmm... 啥也不說了,服務器總內存也才50g,趕緊清理掉吧。然后再寫個每天清理的腳本。
日志過大搞不好會把磁盤爆滿服務器直接宕機。所以想著還是優化下日志文件。
tomcat/logs下面主要有這么幾種日志文件
catalina.out
用于記錄tomcat服務日至,一般項目報錯可以在這看具體異常問題。catalina.out其實是tomcat的標準輸出(stdout)和標準出錯(stderr),這是在tomcat的啟動腳本里指定的,如果沒有修改的話stdout和stderr會重定向到這里。所以我們在應用里使用System.out打印的東西都會到這里來。另外,如果我們在應用里使用其他的日志框架,配置了向Console輸出的,則也會在這里出現。比如以logback為例,如果配置ch.qos.logback.core.ConsoleAppender則會輸出到catalina.out里。
localhost_access_log
用于記錄資源訪問日志, 這個日志文件可記錄所有http的get,post訪問日志。相應的ip地址,訪問時間,請求方式(get,post),請求action名稱…..都會輸出來。這樣有利于我們排查一些問題,還可以采集、存儲、分析日志數據得到有價值的東西。
生成這個文件的配置為:xxxxxxxxxx
prefix="localhost_access_log." suffix=".txt"
pattern="%h %l %u %t "%r" [%{postdata}r] %s %{Referer}i %{User-Agent}i %T %b" />
pattern參數詳解參數含義%a這是記錄訪問者的IP,在日志里是127.0.0.1
%A這是記錄本地服務器的IP,在日志里是192.168.254.108
%b發送信息的字節數,不包括http頭,如果字節數為0的話,顯示為-
%B發送信息的字節數,不包括http頭。
%h服務器的名稱。如果resolveHosts為false的話,這里就是IP地址了,例如我的日志里是10.217.14.16
%H訪問者的協議,這里是HTTP/1.0
%l官方解釋:Remote logical username from identd (可能這樣翻譯:記錄瀏覽者進行身份驗證時提供的名字)(always returns ‘-’)
%m訪問的方式,是GET還是POST
%p本地接收訪問的端口
%q比如你訪問的是aaa.jsp?bbb=ccc,那么這里就顯示?bbb=ccc,就是querystring的意思
%rFirst line of the request (method and request URI) 請求的方法和URL
%shttp的響應狀態碼
%S用戶的session ID,這個session ID大家可以另外查一下詳細的解釋,反正每次都會生成不同的session ID
%t請求時間
%u得到了驗證的訪問者,否則就是"-"
%U訪問的URL地址,我這里是/rightmainima/leftbott4.swf
%v服務器名稱,可能就是你url里面寫的那個吧,我這里是localhost
%DTime taken to process the request,in millis,請求消耗的時間,以毫秒記
%TTime taken to process the request,in seconds,請求消耗的時間,以秒記
manager.log
用于記錄tomcat通過manager下的web項目管理日志
....還有其他的一些日志,如果Tomcat以服務的方式運行還會產生以“服務名-stdout.yyyy-mm-dd.log”和“服務名-stderr.yyyy-mm-dd.log”命名的日志,用于記錄標準輸出日志和標準錯誤流日志。還有一個commons-daemon.yyyy-dd-mm.log 用于記錄安裝或者移除Tomcat服務過程產生的日志。
這些日志記錄級別都是info級別。
清理catalina.out
查看日志信息:tail -n 500 /usr/local/apache-tomcat-8.5.38/logs/catalina.outx
cp /usr/local/apache-tomcat-8.5.38/logs/catalina.out /usr/local/apache-tomcat-8.5.38/logs/catalina$(date -d "today" +"%Y%m%d_%H%M%S").log&&echo "" > /usr/local/apache-tomcat-8.5.38/logs/catalina.out
定時清空日志x
添加腳本clean.sh(清空catalina.out和30天以前其他一些日志,logs_path為日志路徑)
#!/bin/bash
logs_path="/usr/local/apache-tomcat-8.5.38/logs/"
d=`date +%Y-%m-%d`
cp $logs_path/catalina.out $logs_path/catalina.$ozvdkddzhkzd.out
>$logs_path/catalina.out;
find $logs_path -mtime +30 -name "catalina.*.out" -exec rm -rf {} \;
find $logs_path -mtime +30 -name "localhost.*.log" -exec rm -rf {} \;
find $logs_path -mtime +30 -name "localhost_access_log.*.txt" -exec rm -rf {} \;
find $logs_path -mtime +30 -name "catalina.*.log" -exec rm -rf {} \;
find $logs_path -mtime +30 -name "manager.*.log" -exec rm -rf {} \;
find $logs_path -mtime +30 -name "host-manager.*.log" -exec rm -rf {} \;
find $logs_path -mtime +30 -name "fileservice.log.*" -exec rm -rf {} \;
添加腳本權限(777權限代表可讀可寫可執行,該登錄用戶(可以用命令id查看)、他所在的組和其他人都有最高權限)
chmod 777 /usr/local/apache-tomcat-8.5.38/logs/clean.sh
開啟定時任務
crontab -e ?(進入定時任務的編輯界面中)
添加下面代碼(每月最后一天23點執行 cron表達式有很多在線生成器)
0 0 23 L * ? /usr/local/apache-tomcat-8.5.38/logs/clean.sh
每天備份tomcat日志腳本xxxxxxxxxx
#!/bin/bash
Backup_Home=/data/backup-log
mkdir -p $Backup_Home
Log_Home=/data/Tomcat/logs
App_Log_Home=/data/app/tomcat/log
Date=`date -d 'yesterday' '+%Y-%m-%d'`
#將昨天tomcat日志mv到備份目錄
/usr/bin/mv $Log_Home/catalina.$Date.log $Backup_Home
/usr/bin/mv $Log_Home/localhost.$Date.log $Backup_Home
cd $Backup_Home
tar -zcf catalina_"$Date"_log.tar.gz catalina.$Date.log
tar -zcf localhost_"$Date"_log.tar.gz localhost.$Date.log
if [ $? -ne 0 ]; then
echo "$Date:備份失敗并退出" >> backup_err.log
exit
else
echo "$Date:***打包成功正在刪除源日志文件***" >> backup_access.log
/usr/bin/rm -rf catalina.$Date.log
/usr/bin/rm -rf localhost.$Date.log
fi
#==========================================================================
echo "app日志開始備份"
/usr/bin/mv $App_Log_Home/springboot.out $Backup_Home/springboot_"`date +%F`".out
cd $Backup_Home
tar -zcf springboot_"`date +%F`".tar.gz springboot_"`date +%F`".out
if [ $? -ne 0 ]; then
echo "`date +%F`:app日志備份失敗并退出" >> backup_err.log
exit
else
echo "`date +%F`:app日志打包成功,正在刪除源文件" >> backup_access.log
/usr/bin/rm -rf springboot_"`date +%F`".out
fi
#清理日志目錄
find Backup_Home/* -mtime +30 -exec rm {} \;
總結
以上是生活随笔為你收集整理的清理tomcat服务器日志文件,Tomcat日志配置与清理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CWinThread
- 下一篇: fprintf/fscanf函数分析