对于一般的运维和技术来说,每天不是查日志就是在查日志的路上。所以日志的管理规范以及大小,就会影响查看的效率。那该如何合理的管理日志文件的大小呢?毕竟服务只要服务程序不停止,日志每时每刻都会输出,时间越长日志肯定就越大。所以我们就需要将日志切割,并分时间去输出来保证文件不会过大。
那我这里就分享下个人常用的日志切割方法,希望对大家有用。
脚本切割
脚本1:
#!/bin/bash
yesterday=`date -d yesterday "+%F"`
logdir=/www/logs/php/
pidfile=/www/logs/php/php-fpm.pid
logname="php-fpm.log"
[ -d ${logdir} ] && cd ${logdir} || exit 1
[ -f ${loname} ] || exit 1
mv ${logname} ${logname}-${yesterday}
kill -USR1 `cat ${pidfile}`
脚本2:
#!/bin/bash
yesterday=`date -d yesterday "+%F"`
logdir=/www/logs/php/
backupdir=/www/logs/php/backup/
cp ${logdir}php-fpm.log ${backupdir}php-fpm.log-${yesterday}
echo > ${logdir}php-fpm.log
配上定时任务:
0 0 * * * /usr/local/php/bin/cut_phplog.sh
logrotate切割
/web/www/nginxlogs/*.log {
daily
missingok
rotate 93
dateext
# compress
delaycompress
notifempty
dateformat .%Y%m%d%H
create 640 root root
sharedscripts
postrotate
[ -f /usr/local/nginx/logs/nginx.pid ] && /usr/local/nginx/sbin/nginx -s reload
endscript
}
配上定时任务:
59 23 * * * /usr/sbin/logrotate -f /usr/local/nginx/etc/nginxlog
附:以上的3个方法,其实个人还是会更加倾向使用第二个,因为简单方便,并且适用任何日志的切割,毕竟在生产环境下,不是所有的服务都可以随时重启或者是reload配置文件,并不会出现报错。