由于nginx的日志本身只是支持按照server_name或者大小进行划分,对于习惯了apache的按照一个网站每天一个日志的我来说是不可以接受的,于是从网上找了几个nginx按天分割的方法发现都是互相抄袭的,特别是里面有一个命令是kill -9 `cat nginx.pid`,需要杀掉nginx子进程,我觉得不靠谱。
我忽然想到我以前在做openstack的云存储开发时,对rsyslog的日志进行分割的方法,一用果然好用
原理是:
1.从一台已经安装好apache的机器上的apache bin目录下把rotatelogs拷贝到本机的/opt/nginx_logs下
点击(此处)折叠或打开
- mkdir -p /opt/nginx_logs
- cp rotatelogs /opt/nginx_logs/
- chmod +x /opt/nginx_logs/rotatelogs
2.创建有名管道
点击(此处)折叠或打开
- mkdir /opt/nginx_logs/abc_www/
- mkfifo /opt/nginx_logs/abc_www/access_log
点击(此处)折叠或打开
- access_log /opt/nginx_logs/abc_www/access_log;
点击(此处)折叠或打开
- mkdir /opt/nginx_logs/abc_www/log/
点击(此处)折叠或打开
- [root@localhost nginx_logs]# cat /opt/nginx_logs/abc_www/rotate.sh
- baselogdir=/opt/nginx_logs/abc_www
- rotatelogs=/opt/nginx_logs/rotatelogs
- while [ 1 ]
- do
- echo `date +"%F %T"`" rotatelogs access start"
- $rotatelogs $baselogdir/log/access_%Y%m%d.log 86400 480 < $baselogdir/access_log
- echo `date +"%F %T"`" rotatelogs access stop"
- sleep 1;
- done
点击(此处)折叠或打开
- [root@localhost nginx_logs]# cat /opt/nginx_logs/abc_www/run.sh
- sh /opt/nginx_logs/abc_www/rotate.sh >> /opt/nginx_logs/abc_www/log/access-rotate.log 2>&1 &
-----------------------------方法二------------------------
- #!/bin/bash
- # 请将当前脚本的运行时间设置成 00:00
- # 这里是日志保存路径
- logs_path=”/home/www/logs/”
- #分割日志
- mkdir -p ${logs_path}$(date -d “yesterday” +”%Y”)/$(date -d “yesterday” +”%m”)/
- mv ${logs_path}access.log ${logs_path}$(date -d “yesterday” +”%Y”)/$(date -d “yesterday” +”%m”)/access_$(date -d “yesterday” +”%Y%m%d”).log
- mkdir -p ${logs_path}$(date -d “yesterday” +”%Y”)/$(date -d “yesterday” +”%m”)/
- mv ${logs_path}qanote.log ${logs_path}$(date -d “yesterday” +”%Y”)/$(date -d “yesterday” +”%m”)/qanote_$(date -d “yesterday” +”%Y%m%d”).log
- #重启nginx
- kill -USR1 `cat /var/run/nginx.pid`
.配置crontab 每天凌晨00:00定时执行这个脚本
crontab -e
00 00 * * * /bin/bash /usr/local/nginx/sbin/cut_nginx_log.sh
$cd /etc/init.d
./crond restart
http://www.cnblogs.com/jiafan/articles/1153066.html
转自:http://blog.chinaunix.net/uid-11121450-id-3177198.html
相关推荐
windows 下nginx 日志切割 结合windows任务计划,实现每天备份日志,并reopen nginx
: 为限制 Nginx日志文件大小增加,文件过大,导致无法收缩日志,在配置好的nginx的安装目录下,可以采用批处理文件对日志,根据实际需要的时间进行自动切割,本脚本以天为单位进行保存。对于日志备份功能,因存储...
将在 logs目录下生成类似 2014-01-21.access.log 的log文件,这个日期会根据服务器的时间变化) 配置可参照 nginx目录下的 conf/nginx.conf 文件进行log配置 源码留给有特殊需要的朋友自己编译。此源码就是修改后的...
本解本实现了使用shell脚本实现nginx日志分割,大家如果没资源分下载,可以转至:https://mp.csdn.net/mdeditor/85233117# 去查看源代码。谢谢大家
nginx按天进行日志切割脚本,同样适合其它很多服务日志的切割,压缩包包含shell切割脚本和使用说明,该脚本适合nginx同时也适合其他类似服务的日志切割,只要简单修改shell脚本即可,灵活多变,实用。
加到计划任务里,每天自动分割 nginx日志,低分白送,windows版本批处理文件哦
容器化nginx日志分割、定时压缩、定时删除脚本,生产环境亲测无问题
本文实现的功能是在吗每天凌晨00:00把前一天的Nginx日志access.log重命名为access-xxxx-xx-xx.log格式,例如:access-2016-10-01.log,下面话不多说了,来看看详细的实现方法吧。 实现方法 脚本 vim /opt/nginx/...
"nginx日志按时间切割"是常见的日志管理策略,旨在通过定时分割日志文件,避免单个日志文件过大导致的读取性能下降和存储压力。本压缩包提供了一个用于Windows环境的批处理脚本,即`rename-nginx-logs-forwindow.bat...
本文将详细介绍如何实现Nginx日志按天生成和定期删除,以优化日志管理。 首先,Nginx默认的日志生成方式是将所有访问记录都写入到同一份access.log和error.log文件中,随着时间推移,这些文件可能会变得非常大。...
本文详细介绍了如何使用 Nginx 进行负载均衡、动静分离以及请求日志打印配置,并讨论了日志自动切割、压缩和删除的方法。这些技术对于提高 Web 应用程序的性能和稳定性至关重要。在实际部署中,可以根据具体的业务...
资源包含 nginx最新(1.5.9)源码(修改后的)和编译好的nginx服务器两部分。...nginx 文件夹可直接拷贝到系统中即可用,带有日志自动分割功能 有特殊需要的朋友可以自己编译,和原版nginx编译方式一样
nginx日常代理应用所遇到的问题,防止nginx日志过大影响服务的运行
nginx日志分割 供大家参考 直接复制黏贴 修改一下路径就OK
系统日志是一个很重要的东西但同时如果我们不定时清除空间就会给日志占完了,下面我来介绍定期删除日志实现方法,各位同学可参考。...不过使用脚本的时候需要将Nginx的日志文件进行自动分割,否则会删除正在
### 使用Awstats分析Nginx日志 #### Awstats简介 Awstats是一款开源的Web日志分析工具,基于Perl语言开发。它能够提供全面且直观的网站访问统计数据,包括但不限于访问次数、唯一访客数量、访问时间分布、操作系统...
总结来说,这个流程确保了Nginx日志被每天分割备份,并且超过7天的旧日志会被自动删除,从而保持磁盘空间的合理利用。由于Nginx本身并不具备自动清理日志的功能,因此这种日志管理策略对于任何使用Nginx的Linux...
Linux运维-d2企业级Nginx使用-01基于域名的日志分割.mp4