天天看點

tomcat日志切割catalina.out

簡單粗暴方法:

法一:利用系統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>&amp;&gt;</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>&gt;&gt; “$CATALINA_BASE”</code><code>/logs/catalina</code><code>.out 2&gt;&amp;1 &amp;</code>

添加下邊一行

<code>org.apache.catalina.startup.Bootstrap </code><code>"$@"</code> <code>start  2&gt;&amp;1 \</code>

<code>| </code><code>/usr/local/sbin/cronolog</code> <code>"$CATALINA_BASE"</code><code>/logs/catalina</code><code>.%Y-%m-%d.out &gt;&gt; </code><code>/dev/null</code> <code>&amp;</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 &amp;&gt;</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 &amp;&gt;</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>&gt;&gt;</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  &amp;&gt;</code><code>/dev/null</code>

<code>else</code>

<code>    </code><code>echo</code> <code>"沒有 今天的日志 配置失敗"</code> <code>&gt;&gt;</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  \   

&gt;&gt; “$CATALINA_BASE”/logs/catalina.out 2&gt;&amp;1 &amp;  

修改為 

org.apache.catalina.startup.Bootstrap "$@" start  2&gt;&amp;1 \   

    | /usr/local/sbin/cronolog "$CATALINA_BASE"/logs/catalina.%Y-%m-%d.out &gt;&gt; /dev/null &amp;  

上面會有一行touch “$CATALINA_BASE”/logs/catalina.out

把其注釋掉即可

這樣每天就會産生一個catalina.2xxx-0x-xx.out的檔案 零點自動分割

本文轉自 藍葉子Sheep 51CTO部落格,原文連結:http://blog.51cto.com/dellinger/1964674,如需轉載請自行聯系原作者