簡單粗暴方法:
法一:利用系統logrotate指令來實作tomcat的日志切割
先定義tomcat的pid 檔案
修改$TOMCAT_HOME/bin/catalina.sh檔案,大約在128行左右,在PRGDIR下面一行添加CATALINA_PID參數行,修改完成後應該跟下面相同。
<code># Get standard environment variables</code>
<code>PRGDIR=`</code><code>dirname</code> <code>"$PRG"</code><code>`</code>
<code>CATALINA_PID=</code><code>/var/run/tomcat</code><code>.pid</code>
<code>#CATALINA_PID=$PRGDIR/CATALINA_PID</code>
也可以自定義pid路徑,例如“CATALINA_PID=/var/run/tomcat.pid”
<code>進入logrotate.d</code>
<code>cd</code> <code>/etc/logrotate</code><code>.d/</code>
編寫tomcat的輪詢日志配置
<code>[root@iZ25p5pwvouZ logrotate.d]</code><code># vim tomcat_ele </code>
<code>/mnt/tomcat8_ele/logs/catalina</code><code>.out</code>
<code>{</code>
<code>daily</code>
<code>rotate 15</code>
<code>missingok</code>
<code>notifempty</code>
<code>dateext</code>
<code>compress</code>
<code>delaycompress</code>
<code>create 600 root root</code>
<code>sharedscripts</code>
<code>postrotate</code>
<code> </code><code>if</code> <code>[ -f </code><code>/var/run/tomcat_ele</code><code>.pid ]; </code><code>then</code>
<code> </code><code>kill</code> <code>-USR1 `</code><code>cat</code> <code>/var/run/tomcat_ele</code><code>.pid`</code>
<code> </code><code>fi</code>
<code>endscript</code>
<code>}</code>
儲存退出
給他執行權限
<code>chmod</code> <code>u+x </code><code>/etc/logrotate</code><code>.d</code><code>/tomcat_ele</code>
測試:執行腳本
<code>/usr/sbin/logrotate</code> <code>-vf </code><code>/etc/logrotate</code><code>.d</code><code>/tomcat_ele</code>
測試成功然後寫入定時任務定時切割
<code>#auth root</code>
<code>#date 2017-09-12</code>
<code>#定時重新整理ele麼的項目日志</code>
<code>00 00 * * * </code><code>/usr/sbin/logrotate</code> <code>-vf </code><code>/etc/logrotate</code><code>.d</code><code>/tomcat_ele</code> <code>&></code><code>/dev/null</code>
配置完成OK
法二“利用cronlog工具來實作日志切割
1.軟體包準備
從51cto中下載下傳一個包cronolog-1.6.2.tar.gz
2.解壓
<code>tar</code> <code>xf cronolog-1.6.2.</code><code>tar</code><code>.gz</code>
3.準備
<code>cd</code> <code>cronolog-1.6.2</code>
<code>.</code><code>/configure</code>
4.編譯
<code>make</code>
5.編譯安裝
<code>make</code> <code>install</code>
6.配置tomcat的catalina.sh
删掉或注釋 注意注釋要放在下邊要不讓會報錯
<code>org.apache.catalina.startup.Bootstrap “$@” start \</code>
<code>>> “$CATALINA_BASE”</code><code>/logs/catalina</code><code>.out 2>&1 &</code>
添加下邊一行
<code>org.apache.catalina.startup.Bootstrap </code><code>"$@"</code> <code>start 2>&1 \</code>
<code>| </code><code>/usr/local/sbin/cronolog</code> <code>"$CATALINA_BASE"</code><code>/logs/catalina</code><code>.%Y-%m-%d.out >> </code><code>/dev/null</code> <code>&</code>
注意一共要修改兩處 一模一樣的修改
這樣的話就配置完了 配置完成可以重新開機tomcat
<code>.</code><code>/catalina</code><code>.sh stop 或.</code><code>/shutdown</code><code>.sh</code>
<code>.</code><code>/catalina</code><code>.sh start 或.</code><code>/start</code><code>.sh</code>
會看到log/下邊的catalina.out 變成了以時間指令的日志檔案 配置完成
日志改名
如果不習慣catalina日志以時間指令 可以編寫一個腳本實作日志改名 crontab執行
<code>[root@iZ25p5pwvouZ logs]</code><code># crontab -e</code>
<code>00 05 * * * </code><code>/bin/sh</code> <code>/server/scripts/ele_logortate</code><code>.sh &></code><code>/dev/null</code>
定時任務腳本内容
<code>[root@iZ25p5pwvouZ logs]</code><code># cat /server/scripts/ele_logortate.sh </code>
<code>#!/bin/sh</code>
<code>Path=</code><code>"/mnt/tomcat8_ele/logs/"</code>
<code>Yesterday=`</code><code>date</code> <code>+%F -d </code><code>"-1 day"</code><code>`</code>
<code>TodayFile=`</code><code>echo</code> <code>${Path}catalina.$(</code><code>date</code> <code>+%F).out`</code>
<code>if</code> <code>[ -f $TodayFile ]</code>
<code>then</code>
<code> </code><code>/bin/mv</code> <code>${Path}catalina.out ${Path}catalina.$Yesterday.out &></code><code>/dev/null</code>
<code> </code><code>if</code> <code>[ $? -</code><code>ne</code> <code>0 ];</code><code>then</code>
<code> </code><code>echo</code> <code>"`date +%F` 改名失敗"</code> <code>>></code><code>/tmp/ele_logortate</code><code>.log</code>
<code> </code><code>sleep</code> <code>5</code>
<code> </code><code>/bin/mv</code> <code>$TodayFile ${Path}catalina.out &></code><code>/dev/null</code>
<code>else</code>
<code> </code><code>echo</code> <code>"沒有 今天的日志 配置失敗"</code> <code>>></code><code>/tmp/ele_logortate</code><code>.log</code>
<code>fi</code>
OK完成。
解壓縮
# tar zxvf cronolog-1.6.2.tar.gz
進入cronolog安裝檔案所在目錄
# cd cronolog-1.6.2
運作安裝
# ./configure
# make
# make install
成功後 運作which cronolog會找到對應的路徑 /usr/local/sbin/cronolog
在tomcat的bin目錄的catalina.sh
中找到2行:
org.apache.catalina.startup.Bootstrap “$@” start \
>> “$CATALINA_BASE”/logs/catalina.out 2>&1 &
修改為
org.apache.catalina.startup.Bootstrap "$@" start 2>&1 \
| /usr/local/sbin/cronolog "$CATALINA_BASE"/logs/catalina.%Y-%m-%d.out >> /dev/null &
上面會有一行touch “$CATALINA_BASE”/logs/catalina.out
把其注釋掉即可
這樣每天就會産生一個catalina.2xxx-0x-xx.out的檔案 零點自動分割
本文轉自 藍葉子Sheep 51CTO部落格,原文連結:http://blog.51cto.com/dellinger/1964674,如需轉載請自行聯系原作者