天天看點

編譯安裝Cronolog輪轉Apache和Tomcat日志

        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為日志檔案分割方式,即為“年月日”。

關鍵點在于: 被輪詢的日志一定要是絕對路徑,不能是相對路徑。

老男孩學習筆記:

編譯安裝Cronolog輪轉Apache和Tomcat日志
編譯安裝Cronolog輪轉Apache和Tomcat日志

修改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 &      

繼續閱讀