apache、tomcat、nginx日誌切割使用cronolog
源代碼包:cronolog-1.6.2.tar.gz
tar zxvf cronolog-1.6.2.tar.gzcd cronolog-1.6.2
./configure
make && make installldconfig |
cronolog安裝成功以後
which cronolog #確定/usr/local/sbin/cronolog 位置 |
1.apache
修改日誌生成
CustomLog “|/usr/local/sbin/cronolog /usr/local/apache2/logs/access_log.%Y%m%d” combined
2.tomcat
TOMCAT 默認日誌全部寫在$CATALINA_BASE/logs/catalina.out裏面,通過cronolog軟件對日誌文件進行切割,以便與分析。
修改 $CATALINA_HOME/bin/catalina.sh
找到touch “$CATALINA_OUT”行修改其下面的if-else內的org.apache.catalina.startup.Bootstrap “$@” start 輸出信息重定向位置
org.apache.catalina.startup.Bootstrap "$@" start 2>&1\ |/usr/local/sbin/cronolog "$CATALINA_BASE"/logs/catalina.%Y-%m-%d.out >> /dev/null & |
輸出信息通過管道傳送給cronolog 處理後寫入日誌文件$CATALINA_BASE”/logs/catalina.%Y-%m-%d.out中。
重啓tomcat就可以看到以時間格式存儲的日誌文件。
3.nginx
1)創建一個命名管道
mkfifo /usr/local/nginx/logs/error_log_pipe |
2)修改nginx.conf
error_log logs/error_log_pipe info; |
3)執行後臺運行nohup
nohup cat /usr/local/nginx/logs/error_log_pipe 2>&1|/usr/local/sbin/cronolog /usr/local/nginx/logs/error_$(date +"%Y%m%d").log >> /dev/null & |
4)重啓nginx
kill -HUP `cat /usr/local/nginx/logs/nginx.pid` |
// nginx執行腳本方式切割,重新生成日誌
/usr/local/nginx/sbin/cut_nginx_log.sh
#!/bin/bash# This script run at 00:00# The Nginx logs pathlogs_path="/usr/local/nginx/logs/"mkdir -p ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/if [ -e ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/error_$(date -d "yesterday" +"%Y%m%d").log ]thencat ${logs_path}error.log >> ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/error_$(date -d "yesterday" +"%Y%m%d").logcat /dev/null > ${logs_path}error.logelsemv ${logs_path}error.log ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/error_$(date -d "yesterday" +"%Y%m%d").logfikill -USR1 `cat /usr/local/nginx/logs/nginx.pid` |
00 00 * * * /bin/bash /usr/local/nginx/sbin/cut_nginx_log.sh