nginx、mysql 日志定时任务切割logrotate
配置文件
/alidata/log/nginx/aipiaxi/*.log { daily rotate 15 missingok dateext compress notifempty sharedscripts postrotate if [ -f /var/run/nginx.pid ]; then kill -USR1 `cat /var/run/nginx.pid` fi endscript }
最后脚本的意思是,让nginx日志开始一个新的日志文件。
然后添加定时任务
crontab -e 0 4 * * * /usr/sbin/logrotate -vf /etc/logrotate.d/nginx
每天凌晨4点切割日志
日志格式
nginx.conf
log_format main '[$time_iso8601] "$http_x_forwarded_for" "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" '; # 使用 access_log /path/to/log main;
对于mysql日志的切割,其实,住需要修改my.cnf 配置文件就可以。
# vim /etc/my.cnf # 修改配置文件[mysqld]区域添加如下两行保存 expire_logs_days = 7 max_binlog_size = 500M
修改完后,记得重启mysql
如果需要使用logrotate,写法类似。 主要是重启mysql日志的命令不同
#!/bin/bash # PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin # export PATH slowlog=/mydata/data/slow.log mv $slowlog /mydata/slowlog/slow.`date +%Y%m%d%H`.log mysqladmin -uroot -pzabbix2017 --socket=/tmp/mysql.sock flush-logs find /mydata/slowlog/slow.*.log -type f -mtime +5 -exec rm {} \; > /dev/null 2>&1
保存后,也需要添加定时任务。 通过mysqladmin重启命令可以在不重启mysql的情况下,分割日志。