1. 程式人生 > >tomcat日誌自動分割

tomcat日誌自動分割

http://cmjcmj8080.iteye.com/blog/847619

今天在tomcat上檢視專案日誌的時候,發現catalina.out檔案竟然已經達到202M了,決定做一下日誌的分割.先看了一下crontab任務中,發現有個刪除前10天日誌的自動任務,但是沒有發現切割的自動任務. 

    放狗搜了一下,據說tomcat有預設的日誌分割功能,能每天自動生成類似catalina.2010-10-08.log的檔案,但是預設catalina.out檔案卻一直增長.據說到一定大小時佔磁碟空間(廢話),影響效能,且會報錯,這點暫時沒發現.其他的查了一下logs檔案確實如此. 
    解決方法,使用cronolog進行日誌切割,據說cronolog是個切割日誌的小工具,可以切割很多種日誌檔案,有空得試試.具體做法如下: 

1、下載(最新版本) 
# wget http://cronolog.org/download/cronolog-1.6.2.tar.gz 
2、解壓縮 
# tar zxvf cronolog-1.6.2.tar.gz 
3、進入cronolog安裝檔案所在目錄 
# cd cronolog-1.6.2 
4、執行安裝 
# ./configure 
# make 
# make install 
5、檢視cronolog安裝後所在目錄(驗證安裝是否成功) 
# which cronolog 
一般情況下顯示為:/usr/local/sbin/cronolog 
6.進入Tomcat的bin目錄,開啟catalina.sh檔案,找到tomcat啟動的相關行,或者你直接查詢catalina.out,一般我們修改下面行中的內容(因為我們一般不會在-security條件下執行), 

     else 
    “$_RUNJAVA” $JAVA_OPTS $CATALINA_OPTS \ 
    -Djava.endorsed.dirs=”$JAVA_ENDORSED_DIRS” -classpath “$CLASSPATH” \ 
    -Dcatalina.base=”$CATALINA_BASE” \ 
    -Dcatalina.home=”$CATALINA_HOME” \ 
    -Djava.io.tmpdir=”$CATALINA_TMPDIR” \ 
    org.apache.catalina.startup.Bootstrap “[email protected]
” start  \ 

    >> “$CATALINA_BASE”/logs/catalina.out 2>&1 & 

    if [ ! -z "$CATALINA_PID" ]; then 
    echo $! > $CATALINA_PID 
    fi 
    fi 
修改 
org.apache.catalina.startup.Bootstrap “[email protected]” start  \ 
>> “$CATALINA_BASE”/logs/catalina.out 2>&1 & 
為 
org.apache.catalina.startup.Bootstrap “[email protected]” start 2>&1 \ 
| /usr/local/sbin/cronolog “$CATALINA_BASE”/logs/catalina.%Y-%m-%d.out >> /dev/null & 
同時,上面有一行 
touch “$CATALINA_BASE”/logs/catalina.out 
可以註釋掉,完成之後重起Tomcat就可以了,在logs目錄下可以看到catalina.2009-02-18.out的日誌,是按日生成的。 
以上內容均參考網路上的帖子,有一個地方不明白,一個地方需要明天驗證. 
不明白的: 
"org.apache.catalina.startup.Bootstrap “[email protected]” start 2>&1 \ 
| /usr/local/sbin/cronolog “$CATALINA_BASE”/logs/catalina.%Y-%m-%d.out >> /dev/null &"中為什麼要加">> /dev/null"而不是直接">> /usr/local/sbin/cronolog “$CATALINA_BASE”/logs/catalina.%Y-%m-%d.out"直接把輸出都重定向到catalina.%Y-%m-%d.out檔案.這個得找時間再查查,也希望知道的朋友留言告訴我一下. 
需要驗證的: 
註釋掉touch “$CATALINA_BASE”/logs/catalina.out以後,不產生catalina.out,那麼當前輸出是輸出到今天的檔案catalina.%Y-%m-%d.out嗎?它會每日執行切割並定向到新的日誌檔案?沒看到切割的定時任務,那麼這個定時任務是由tomcat本身維護的?cronolog只是提供切割方法?(之前說到tomcat預設也提供切割,貌似都可以不需要cronolog,只要註釋touch行就行...找機會試試) 

對了,還看到另外一種解決方法,純shell實現的. 
編寫一個.sh檔案,並放到tomcat下的bin目錄,在cron中自動執行,shell指令碼如下: 
#!/bin/bash 

cd `dirname $0` 
d=`date +%Y%m%d` 
d7=`date -d'7 day ago' +%Y%m%d` 

cd ../logs/ 

cp catalina.out catalina.out.${d} 
echo "" > catalina.out 
rm -rf catalina.out.${d7} 

同樣有個問題cd `dirname $0` 沒看懂什麼意思 
原來, 
$0獲取當前Shell程式的檔名 
dirname $0,獲取當前Shell程式的路徑 
cd `dirname $0`,進入當前Shell程式的目錄

相關推薦

tomcat日誌自動分割

http://cmjcmj8080.iteye.com/blog/847619 今天在tomcat上檢視專案日誌的時候,發現catalina.out檔案竟然已經達到202M了,決定做一下日誌的分割.先看了一下crontab任務中,發現有個刪除前10天日誌的自動任務,但是沒有

Nginx 日誌自動分割

寫入 nta 新的 mv命令 源碼 erro 文件描述符 信號 問題 Nginx 的日誌都是寫在一個文件當中的,不會自動地進行切割,如果訪問量很大的話,將導致日誌文件容量非常大,不便於管理和造成Nginx 日誌寫入效率低下等問題。所以,往往需要要對access_log、er

Linux下Tomcat日誌自動定時打包完美實現

一、場景 1、環境 CentOS 7.0,Tomcat 8.0.33 ,(jdk-1.8.0_171) 2、目的 隨著時間推移,tomcat下的日誌檔案catalina.out越來越大,當檢視日誌時效率低下。所以,為了方便日誌的查閱,將catalina.out

nginx日誌自動分割的完美實現

大家都知道,Nginx ("engine x") 是一個高效能的 HTTP 和 反向代理 伺服器,也是一個 IMAP/POP3/SMTP 代理伺服器,因它的穩定性、豐富的功能集、示例配置檔案和低系統資源的消耗而聞名。但是他的日誌系統實在是太欠了,所有的日誌都會輸出到一個檔案

Tomcat 日誌文件分割

出現 http 日誌 內容 解決 a.out ron 其中 如果 新到公司, 拿到了前輩們留下的 程序 “病歷書” , 上面記載了項目上的一些 經常會犯的毛病, 還有相應的解決方法。 其中有的是因為後臺 代碼邏輯上的一些原因 , N手代碼通病了吧 (這個還是以後再治吧

Goaccess自動分割nginx日誌

增加 介紹 sta 系統 博客 goaccess 時間 下載文件 spider GoAccess 是一款開源的網站日誌實時分析工具。GoAccess 的工作方式很容易理解,就是讀取和解析 Apache/Nginx/Lighttpd 的訪問日誌文件 access log,然後

tomcat日誌按天分割(cronolog)

1.安裝cronolog 安裝方式一: shell> sudo yum install cronolog 或 shell> sudo apt-get install cronolog 驗證cronolog: shell> which cronolog 安裝方

tomcat日誌分割定期刪除catalina.out

每天晚上11點50切割日誌檔案,同時刪除超過30天的日誌 log_path=/usr/local/tomcat/logs d=`date +%Y-%m-%d` d90=`date -d'30 day ago' +%Y-%m-%d` cd ${log_path} && cp catalina.

Tomcat日誌分割

Tomcat日誌分割 一.背景 Tomcat 日誌如果長時間未處理,會有一個很大的log檔案,檢視不是很方便,如果根據時間每天記錄一個日誌,可以很方便的檢視問題以及刪除老舊的日誌檔案。 二.操作  我們採用日期形式切割catalina.out 日誌,因此採用cronlog 軟體切割: &n

apache 2.4.4 自動分割日誌,按年月日生成

<VirtualHost *:80> #風來了.呆狐狸 DocumentRoot "/www/wwwroot/www.lanmps.com" ServerName www.lanmps.c

logrotate + crontab 配置tomcat日誌超過特定大小分割

1. 建立logrorate檔案 /etc/logrotate.d/tomcat,其中的內容如下:(具體引數可用man logrotate查詢) /apps/usr/webserver/tomcat-6.0.35/logs/catalina.out // tomcat日誌的

python小指令碼 自動清理大於七天的Tomcat日誌

系統資訊 CentOS release 6.6 (Final) 預設py版本 Python 2.6.6  指令碼內容 簡介  根據目錄 遍歷目錄中的檔案  然後判斷建立時間和七天前的時間大小 如果最後一次訪問時間小於七天前的時間則進行刪除   #!/usr/bin/e

ubuntu 定時備份清理tomcat日誌,並且刪除七天之前的日誌

七天 date lin server class catalina rm -rf color mtime #!/bin/bash #logs_paths #logs_paths[0]="/usr/local/webserver/tomcat/logs" #logs_pa

Tomcat日誌系統詳解

mat core catalina res 最大的 tor dumps 異常 startup 綜合:Tomcat下相關的日誌文件 catalina引擎的日誌文件,文件名:catalina.日期.log Tomcat下內部代碼丟出的日誌,文件名localhost.日期.lo

TomcatTomcat日誌切割

ins 解壓 startup onf touch bootstra cron install 成功 下載並解壓縮 cronolog # tar zxvf cronolog-1.6.2.tar.gz 2、進入cronolog安裝文件所在目錄 # cd cronolog-1.6

Nginx反向代理時tomcat日誌獲取真實IP

director div tom log sna tomcat XML localhost 如果 對於nginx+tomcat這種架構,如果後端tomcat配置保持默認,那麽tomcat的訪問日誌裏,記錄的就是前端nginx的IP地址,而不是真實的訪問IP。因此,需

tomcat日誌壓縮

tomcat日誌壓縮#! /bin/shdate=$(/bin/date -d -1day +%Y-%m-%d)tomcat_date=$(/bin/date -d -1day +%Y%m%d)#tomcat日誌tomcat_logs_path_a="PATH"tomcat_logs_path_b="PATH

Linux下Tomcat開機自動啟動

權限 esc ref 進程 chkconfig lin 自啟動腳本 lock cas linux下tomcat開機自動啟動有兩種方法,一種是簡單,一種是復雜而又專業的,使用shell腳本要實現,我們一般推薦shell腳本啟動方式。下面我們分別介紹這兩種方法。 1.shel

Tomcat 服務自動啟動

查看 輸入 tomcat-7 lin sys clas ini fig cannot 一、配置/etc/rc.local rc.local是linux啟動init之後執行的腳本。 sudo vi /etc/rc.local 添加如下一行 /home/myuser/soft

tomcat日誌切割catalina.out

out catalina 日誌切割 法一:利用系統logrotate命令來實現tomcat的日誌切割先定義tomcat的pid 文件修改$TOMCAT_HOME/bin/catalina.sh文件,大約在128行左右,在PRGDIR下面一行添加CATALINA_PID參數行,修改完成後應該跟下面相