10
Jul
版权声明:可以在网上任意转载,转载时请务必以超链接形式标明文章原始出处、作者信息及本声明文字。
作者:shunz,出处:http://shunz.net/2008/07/nginx_log_rotation.html
作者:shunz,出处:http://shunz.net/2008/07/nginx_log_rotation.html
Nginx是一款采用Linux 2.6内核epoll新机制开发的Web服务器软件,能极大地提高Web访问特别是小文件访问的I/O性能,是c10k问题的一个解决方案。有测试称Nginx比Apache效率提高10倍,而从我自己上次的测试来看,其并发性能确实比Apache强不少。Nginx以短小精悍著称,所以虽然一些web核心功能他都支持得挺好,但是一些扩展功能却还不能支持,比如Nginx目前就还不支持通过pipe输出log,所以就不支持利用cronolog来按时间进行日志截断回滚。下面提供一种替代解决方案:
#!/bin/sh
log_dir="/var/log/httpd"
yesterday=`date +%Y%m%d -d '-1 day'`
lastday =`date +%Y%m%d -d '-1 month'`
/bin/rm ${log_dir}/access.${lastday}.log
/bin/rm ${log_dir}/error.${lastday}.log
/bin/mv ${log_dir}/access.log ${log_dir}/access.${yesterday}.log
/bin/mv ${log_dir}/error.log ${log_dir}/error.${yesterday}.log
kill -USR1 `cat /var/run/nginx.pid`
/bin/gzip ${log_dir}/access.${yesterday}.log &
/bin/gzip ${log_dir}/error.${yesterday}.log &
然后将该脚本保存在/etc/cron.daily目录里,或者在crontab里每日0点时运行。
另外,还可以结合awstats进行日志分析,这里就不详细说了,可以参考车东的相关文章。
5 条评论了已经
发表评论
字体为 粗体 是必填项目,邮箱地址 永远不会 公布。
允许部分 HTML 代码:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
URIs must be fully qualified (eg: http://shunz.net/) and all tags must be properly closed.
超出部分系统将会自动分段及换行。
请保证评论内容是与日志或 Blog 内容相关的,灌水、攻击性或不恰当的评论 may 会被编辑或删除。













不用那么麻烦的,nginx rotate logs不用重启,只需要配好logrotate脚本就可以了
下面是个简单的例子
/var/log/nginx/*log {
create 640 root log
compress
postrotate
/bin/kill -HUP 3810 2> /dev/null || true
endscript
}
上面的脚本有个本机的hack,在其他地方不一定work
详细解释可以参考
http://wiki.codemong.....ogRotation
to number5
logrotate无法实现log文件名按日期生成吧?
而且你的脚本里的3810这个数字不是通用的
没用过,学习了。。
刚学linux,还有点不是很明白