天天看点

cronolog日志切割

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 位置      
/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 &      
kill -HUP `cat /usr/local/nginx/logs/nginx.pid`      
#!/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`      
crontab -e      
00 00 * * * /bin/bash    /usr/local/nginx/sbin/cut_nginx_log.sh      

继续阅读