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
转载于:https://blog.51cto.com/caidui/1676030