nginx日志切割两方案

  • A+
所属分类:未分类

一、基于logrotate

[root@localhost logrotate.d]# pwd
/etc/logrotate.d
[root@localhost logrotate.d]# cat nginx
/application/nginx/logs/blogs/blogs_access.log /application/nginx/logs/blogs/blogs_error.log {
daily
rotate 15
minsize 10M
sharedscripts
postrotate
/usr/local/server/nginx/sbin/nginx -s reload
endscript
}

 

二、直接基于crond

理想的做法就是根据每天进行区分日志文件,如host.access_20120815.log等, 日志保留最近10天的, 超过10天的日志文件则进行删除.

根据上需求进行nginx的日志切割.

1. 脚本nginxcutlogs.sh

Shell代码
  1. [devwqs@rehserver bin]$ more nginxcutlogs.sh
  2. #!/bin/bash
  3. 1. move host.access.log to host.access_20120821.log
  4. logs_path="/home/devwqs/nginx/logs/"
  5. mv ${logs_path}host.access.log ${logs_path}host.access_$(date -d "yesterday" +"%Y%m%d").log
  6. kill -USR1 cat /home/devwqs/nginx/logs/nginx.pid
  7. 2. delete all host.access_2012xxxx.log which overtime 10 days
  8. find ${logs_path} -name 'host.*.log' -type f -mtime +10 -exec rm {} \;

 

2. 使用crontab进行把上述脚本发布到定时任务

每天凌晨0.01分定时执行nginxcutlogs:

Shell代码
  1. #1. 编辑devwqs的crontab定时任务
  2. [devwqs@rehserver bin]$ crontab –e
  3. 1 0 * * * sh /home/devwqs/bin/nginxcutlogs.sh
  4. #2. 重新启动crontab
  5. [devwqs@rehserver bin]
  6. systemctl restart cron
  7. Stopping crond: [  OK  ]
  8. Starting crond: [  OK  ]
weinxin
我的微信公众号
我的微信公众号扫一扫

发表评论

:?::razz::sad::evil::!::smile::oops::grin::eek::shock::???::cool::lol::mad::twisted::roll::wink::idea::arrow::neutral::cry::mrgreen: