cronolog 是一款日志輪詢(rotation)工具,可以用它來把Apache, Tomcat, Nginx等WEB伺服器的輸出日志切分按日或者按月儲存。cronolog 從标準輸入中讀取日志内容,然後把他們寫到按指定格式命名的日志檔案中。當日期改變後, cronolog會把之前的日志檔案關閉,再打開一個包含新日期的日志檔案。利用cronolog可以完美的解決web伺服器日志檔案不斷增大,且不能在運作時删除的問題。
cronolog特點:
cronolog 特點cronolog可以按月、日甚至按小時進行日志輪詢,也可以配置每個日志檔案的最大值,當檔案大小達到這個最大值時,自動記錄到下一個日志檔案中。
cronolog穩定版本為 1.6.2,但此版本有一個弊端:當日志檔案的大小到2G(2150726147位元組)時,cronolog程序就變成僵屍程序,即日志無法再寫入,cronolog 1.7 版本解決了這個問題。
下載下傳
<code>cronolog-1.7.0-beta.tar.gz</code>
安裝
<code># tar zxvf cronolog-1.7.0-beta.tar.gz</code>
<code># cd cronolog-1.7.0</code>
<code># ./configure --prefix=/usr/local/cronolog</code>
<code># make</code>
<code># make install</code>
如果不指定--prefix路徑,cronolog預設安裝在/usr/local/sbin/cronolog
修改Apache虛拟主機配置
編輯httpd.conf檔案,将其中的
<code>[root@localhost~]#vim/etc/httpd/httpd.conf</code>
将預設日志:
<code>CustomLog "logs/access_log"combined</code>
修改為:
<code>CustomLog </code><code>"| /usr/local/sbin/cronolog /logs/www/access_%Y%m%d.log"</code> <code>combined</code>
其中%Y%m%d為日志檔案分割方式,即為“年月日”。
關鍵點在于: 被輪詢的日志一定要是絕對路徑,不能是相對路徑。
老男孩學習筆記:
<a href="https://s4.51cto.com/oss/201710/27/0691aa1fa296bfd644e23a8aad7710bc.jpg-wh_500x0-wm_3-wmp_4-s_2979902112.jpg" target="_blank"></a>
<a href="https://s5.51cto.com/oss/201710/27/30f4d22d6d57a221200c8b21af91c834.jpg-wh_500x0-wm_3-wmp_4-s_820911596.jpg" target="_blank"></a>
修改Tomcat配置
修改tomcat的bin目錄下的catalina.sh
<code># vim /usr/local/tomcat/bin/catalina.sh</code>
找到如下代碼
<code>CATALINA_OUT=</code><code>"$CATALINA_BASE"</code><code>/logs/catalina</code><code>.out</code>
<code>touch</code> <code>"$CATALINA_OUT"</code>
<code> </code><code>if</code> <code>[ </code><code>"$1"</code> <code>= </code><code>"-security"</code> <code>] ; </code><code>then</code>
<code> </code><code>if</code> <code>[ $have_tty -</code><code>eq</code> <code>1 ]; </code><code>then</code>
<code> </code><code>echo</code> <code>"Using Security Manager"</code>
<code> </code><code>fi</code>
<code> </code><code>shift</code>
<code> </code><code>"$_RUNJAVA"</code> <code>"$LOGGING_CONFIG"</code> <code>$LOGGING_MANAGER $JAVA_OPTS $CATALINA_OPTS \</code>
<code> </code><code>-Djava.endorsed.</code><code>dirs</code><code>=</code><code>"$JAVA_ENDORSED_DIRS"</code> <code>-classpath </code><code>"$CLASSPATH"</code> <code>\</code>
<code> </code><code>-Djava.security.manager \</code>
<code> </code><code>-Djava.security.policy==</code><code>"$CATALINA_BASE"</code><code>/conf/catalina</code><code>.policy \</code>
<code> </code><code>-Dcatalina.base=</code><code>"$CATALINA_BASE"</code> <code>\</code>
<code> </code><code>-Dcatalina.home=</code><code>"$CATALINA_HOME"</code> <code>\</code>
<code> </code><code>-Djava.io.tmpdir=</code><code>"$CATALINA_TMPDIR"</code> <code>\</code>
<code> </code><code>org.apache.catalina.startup.Bootstrap </code><code>"$@"</code> <code>start \</code>
<code> </code><code>>> </code><code>"$CATALINA_OUT"</code> <code>2>&1 &</code>
<code> </code><code>else</code>
<code> </code><code>fi</code>
将上面CATALINA_OUT="$CATALINA_BASE"/logs/catalina.out修改為:
<code>CATALINA_OUT="$CATALINA_BASE"/logs/catalina.%Y-%m-%d.out</code>
将最上面的touch “$CATALINA_OUT”注釋掉如下
<code>#touch "$CATALINA_OUT"</code>
将下面兩處
<code>org.apache.catalina.startup.Bootstrap "$@" start \</code>
<code>>> "$CATALINA_OUT" 2>&1 &</code>
修改為
<code> </code><code>org.apache.catalina.startup.Bootstrap </code><code>"$@"</code> <code>start 2>&1 \</code>
<code> </code><code>| </code><code>/usr/local/sbin/cronolog</code> <code>"$CATALINA_OUT"</code> <code>>> </code><code>/dev/null</code> <code>2>&1 &</code>
或
<code> </code><code>org.apache.catalina.startup.Bootstrap </code><code>"$@"</code> <code>start 2>&1 \</code>
<code> </code><code>| </code><code>/usr/local/cronolog/sbin/cronolog</code> <code>"$CATALINA_BASE"</code><code>/logs/catalina</code><code>.%Y-%m-%d.out >> </code><code>/dev/null</code> <code>&</code>
然後重新開機tomcat即可
本文轉自ling118 51CTO部落格,原文連結:http://blog.51cto.com/meiling/1976745,如需轉載請自行聯系原作者