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