使用cronolog工具切分Tomcat的catalina.out日志檔案
普通使用者下載下傳、安裝cronolog
<code>[tomcat@localhost ~]$ tar -xf cronolog-1.6.2.tar.gz</code>
<code>[tomcat@localhost ~]$ cd cronolog-1.6.2/</code>
<code>[tomcat@localhost cronolog-1.6.2]$ ./configure --prefix=/home/tomcat/cronolog</code>
<code>make</code>
<code>make install</code>
root使用者下下載下傳、安裝cronolog
<code>[root@localhost ~]# rpm -qa |grep cronolog</code>
<code>[root@localhost ~]# tar zxvf cronolog-1.6.2.tar.gz </code>
<code>[root@localhost ~]# cd cronolog-1.6.2</code>
<code>[root@localhost cronolog-1.6.2]# ./configure </code>
<code>[root@localhost cronolog-1.6.2]# make && make install</code>
<code>[root@localhost cronolog-1.6.2]# which cronolog</code>
<code>/usr/local/sbin/cronolog</code>
在普通使用者的家目錄下編輯.bash_profile檔案裡添加“$HOME/cronolog/sbin”添加cronolog的安裝路徑
[tomcat@localhost ~]$ vi .bash_profile
<code># .bash_profile </code>
<code># Get the aliases and functions</code>
<code>if [ -f ~/.bashrc ]; then</code>
<code> </code><code>. ~/.bashrc</code>
<code>fi</code>
<code># User specific environment and startup programs</code>
<code>PATH=$PATH:$HOME/bin:$HOME/cronolog/sbin</code>
<code>export PATH</code>
用which cronolog可以查到安裝的路徑,這個路徑待會在修改catalina.sh時會用到。
修改catalina.sh 檔案
将186行【CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out】修改成187行【CATALINA_OUT="$CATALINA_BASE"/logs/opres.%Y-%m-%d.out】内容,日志名可以自行定義;
注釋掉370行【touch "$CATALINA_OUT"】;
383、384行【
org.apache.catalina.startup.Bootstrap "$@" start \
>> "$CATALINA_OUT" 2>&1 "&"】替換成385、386行【
org.apache.catalina.startup.Bootstrap "$@" start 2>&1 \
| /home/tomcat/cronolog/sbin/cronolog "$CATALINA_OUT" >> /dev/null 2>&1 &
】;
396、397行【
org.apache.catalina.startup.Bootstrap "$@" start \
>> "$CATALINA_OUT" 2>&1 "&"
】替換成394、395行【
】;最後一步(394、395)要注意如果原本的指令隻是注釋掉,替換的内容一定要在原本内容的上面,不然無法正常啟動,前面的替換(383、384)位置沒有關系的
<code>97 JAVA_OPTS=</code><code>"-Xms512m -Xmx1024m -Xss1024K -XX:PermSize=256m -XX:MaxPermSize=512m"</code>
<code> </code><code>98 </code>
<code> </code><code>99 </code><code># OS specific support. $var _must_ be set to either true or false.</code>
<code>185 </code><code>if</code> <code>[ -z </code><code>"$CATALINA_OUT"</code> <code>] ; </code><code>then</code>
<code>186 </code><code># CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out</code>
<code>187 CATALINA_OUT=</code><code>"$CATALINA_BASE"</code><code>/logs/opres</code><code>.%Y-%m-%d.out</code>
<code>370 </code><code>#touch "$CATALINA_OUT"</code>
<code>371 </code><code>if</code> <code>[ </code><code>"$1"</code> <code>= </code><code>"-security"</code> <code>] ; </code><code>then</code>
<code>372 </code><code>if</code> <code>[ $have_tty -</code><code>eq</code> <code>1 ]; </code><code>then</code>
<code>373 </code><code>echo</code> <code>"Using Security Manager"</code>
<code>374 </code><code>fi</code>
<code>375 </code><code>shift</code>
<code>376 </code><code>eval</code> <code>"\"$_RUNJAVA\""</code> <code>"\"$LOGGING_CONFIG\""</code> <code>$LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \</code>
<code>377 -Djava.endorsed.</code><code>dirs</code><code>=</code><code>"\"$JAVA_ENDORSED_DIRS\""</code> <code>-classpath </code><code>"\"$CLASSPATH\""</code> <code>\</code>
<code>378 -Djava.security.manager \</code>
<code>379 -Djava.security.policy==</code><code>"\"$CATALINA_BASE/conf/catalina.policy\""</code> <code>\</code>
<code>380 -Dcatalina.base=</code><code>"\"$CATALINA_BASE\""</code> <code>\</code>
<code>381 -Dcatalina.home=</code><code>"\"$CATALINA_HOME\""</code> <code>\</code>
<code>382 -Djava.io.tmpdir=</code><code>"\"$CATALINA_TMPDIR\""</code> <code>\</code>
<code>383 </code><code># org.apache.catalina.startup.Bootstrap "$@" start \</code>
<code>384 </code><code># >> "$CATALINA_OUT" 2>&1 "&"</code>
<code>385 org.apache.catalina.startup.Bootstrap </code><code>"$@"</code> <code>start 2>&1 \</code>
<code>386 | </code><code>/home/tomcat/cronolog/sbin/cronolog</code> <code>"$CATALINA_OUT"</code> <code>>> </code><code>/dev/null</code> <code>2>&1 &</code>
<code>387 </code>
<code>388 </code><code>else</code>
<code>389 </code><code>eval</code> <code>"\"$_RUNJAVA\""</code> <code>"\"$LOGGING_CONFIG\""</code> <code>$LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \</code>
<code>390 -Djava.endorsed.</code><code>dirs</code><code>=</code><code>"\"$JAVA_ENDORSED_DIRS\""</code> <code>-classpath </code><code>"\"$CLASSPATH\""</code> <code>\</code>
<code>391 -Dcatalina.base=</code><code>"\"$CATALINA_BASE\""</code> <code>\</code>
<code>392 -Dcatalina.home=</code><code>"\"$CATALINA_HOME\""</code> <code>\</code>
<code>393 -Djava.io.tmpdir=</code><code>"\"$CATALINA_TMPDIR\""</code> <code>\</code>
<code>394 org.apache.catalina.startup.Bootstrap </code><code>"$@"</code> <code>start 2>&1 \</code>
<code>395 | </code><code>/home/tomcat/cronolog/sbin/cronolog</code> <code>"$CATALINA_OUT"</code> <code>>> </code><code>/dev/null</code> <code>2>&1 &</code>
<code>396 </code><code># org.apache.catalina.startup.Bootstrap "$@" start \</code>
<code>397 </code><code># >> "$CATALINA_OUT" 2>&1 "&"</code>
<code>398 </code><code>fi</code>
可以通過./catalina.sh start 來檢視配置檔案是否正确;這樣在/usr/local/tomcat/logs每天會自動生成opres.%Y-%m-%d.out檔案,下面我們要做的是定期清理這些過期的檔案,我們可以通過crontab來實作
<code>[tomcat@localhost ~]$ </code><code>crontab</code> <code>-e</code>
<code>30 3 * * * </code><code>/bin/find</code> <code>/home/tomcat/openapi/logs/</code> <code>-mtime +7 -</code><code>type</code> <code>f -name </code><code>"opres*.*.out"</code> <code>-</code><code>exec</code> <code>/bin/rm</code> <code>-f {} \; </code>
<code>[tomcat@localhost ~]$ </code><code>crontab</code> <code>-l </code>
<code>30 3 * * * </code><code>/bin/find</code> <code>/home/tomcat/openapi/logs/</code> <code>-mtime +7 -</code><code>type</code> <code>f -name </code><code>"opres*.*.out"</code> <code>-</code><code>exec</code> <code>/bin/rm</code> <code>-f {} \;</code>
每天淩晨3點半執行清除7天之前過期日志
或者
#每天淩晨3點執行删除前7天的所有tomcat生成的日志檔案(切割的日志名字與原告先的一樣隻是加了日期catalina.%Y-%m-%d.out)
<code>0 3 * * * </code><code>/bin/find</code> <code>/opt/tomcat</code> <code>-mtime +7 -</code><code>type</code> <code>f -name</code><code>"catalina.*.out"</code> <code>-</code><code>exec</code> <code>/bin/rm</code> <code>-rf {} \;</code>
<code>0 3 * * * </code><code>/bin/find</code> <code>/opt/tomcat</code> <code>-mtime +7 -</code><code>type</code> <code>f -name </code><code>"catalina.*.log"</code><code>-</code><code>exec</code> <code>/bin/rm</code> <code>-rf {} \;</code>
<code>0 3 * * * </code><code>/bin/find</code> <code>/opt/tomcat</code> <code>-mtime +7 -</code><code>type</code> <code>f -name </code><code>"host-manager.*.log"</code><code>-</code><code>exec</code> <code>/bin/rm</code> <code>-rf {} \;</code>
<code>0 3 * * * </code><code>/bin/find</code> <code>/opt/tomcat</code> <code>-mtime +7 -</code><code>type</code> <code>f -name</code><code>"localhost.*.log"</code> <code>-</code><code>exec</code> <code>/bin/rm</code> <code>-rf {} \;</code>
<code>0 3 * * * </code><code>/bin/find</code> <code>/opt/tomcat</code> <code>-mtime +7 -</code><code>type</code> <code>f -name</code><code>" manager.*.log"</code> <code>-</code><code>exec</code> <code>/bin/rm</code> <code>-rf {} \;</code>
<code>上面有些覺得寫的太多,可以簡為寫成如下:</code>
<code>0 3 * * * </code><code>/bin/find</code> <code>/opt/tomcat/logs/</code><code>* -mtime +7 -</code><code>exec</code> <code>/bin/rm</code> <code>-rf {} \;</code>
指令說明:
/var/www/ 是查找檔案的路徑。
-type f 是指定檔案類型為普通檔案。
-mtime +30 是指修改時間距離現在30天的檔案。
-exec rm -f 指執行删除比對出來的檔案并且不提示,有的系統需要帶單引号,有的不需要。将以上指令,添加到crontab中,即可實作定期删除了。
比如,每天的1點30分鐘實作删除,可以這樣:
#每天淩晨1點執行删除前30天的日志檔案
<code>0 1 * * * find /aa/tomcat6.0/logs/* -mtime +30 -exec rm -f {} \;</code>
<code></code>
本文轉自ling118 51CTO部落格,原文連結:http://blog.51cto.com/meiling/1911769,如需轉載請自行聯系原作者