nginx日志按照天进行分割

简介:

 由于nginx的日志本身只是支持按照server_name或者大小进行划分,对于习惯了apache的按照一个网站每天一个日志的我来说是不可以接受的,于是从网上找了几个nginx按天分割的方法发现都是互相抄袭的,特别是里面有一个命令是kill -9 `cat nginx.pid`,需要杀掉nginx子进程,我觉得不靠谱。

我忽然想到我以前在做openstack的云存储开发时,对rsyslog的日志进行分割的方法,一用果然好用
原理是:
 

1.从一台已经安装好apache的机器上的apache bin目录下把rotatelogs拷贝到本机的/opt/nginx_logs下

 


 
 
  1. mkdir -p /opt/nginx_logs 
  2. cp rotatelogs /opt/nginx_logs/ 
  3. chmod +x /opt/nginx_logs/rotatelogs 

2.创建有名管道

 


 
 
  1. mkdir /opt/nginx_logs/abc_www/ 
  2. mkfifo /opt/nginx_logs/abc_www/access_log 

3.在nginx配置文件server中加上

 


 
 
  1. access_log /opt/nginx_logs/abc_www/access_log; 

4.创建日志目录

 


 
 
  1. mkdir /opt/nginx_logs/abc_www/log/ 

5.创建日志分割脚本,防止rotatelogs被kille掉

 


 
 
  1. [root@localhost nginx_logs]# cat /opt/nginx_logs/abc_www/rotate.sh 
  2. baselogdir=/opt/nginx_logs/abc_www 
  3. rotatelogs=/opt/nginx_logs/rotatelogs 
  4. while [ 1 ] 
  5. do 
  6. echo `date +"%F %T"`" rotatelogs access start" 
  7. $rotatelogs $baselogdir/log/access_%Y%m%d.log 86400 480 < $baselogdir/access_log 
  8. echo `date +"%F %T"`" rotatelogs access stop" 
  9. sleep 1; 
  10. done 

6.创建启动日志分割脚本

 


 
 
  1. [root@localhost nginx_logs]# cat /opt/nginx_logs/abc_www/run.sh 
  2. sh /opt/nginx_logs/abc_www/rotate.sh >> /opt/nginx_logs/abc_www/log/access-rotate.log 2>&1 & 

7.最终效果

 

end



     本文转自yifangyou 51CTO博客,原文链接:http://blog.51cto.com/yifangyou/1032567,如需转载请自行联系原作者



相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
9月前
|
数据可视化 关系型数据库 MySQL
ELK实现nginx、mysql、http的日志可视化实验
通过本文的步骤,你可以成功配置ELK(Elasticsearch, Logstash, Kibana)来实现nginx、mysql和http日志的可视化。通过Kibana,你可以直观地查看和分析日志数据,从而更好地监控和管理系统。希望这些步骤能帮助你在实际项目中有效地利用ELK来处理日志数据。
694 90
|
监控 应用服务中间件 定位技术
要统计Nginx的客户端IP,可以通过分析Nginx的访问日志文件来实现
要统计Nginx的客户端IP,可以通过分析Nginx的访问日志文件来实现
1045 3
|
应用服务中间件 nginx
nginx error日志 client intended to send too large body: 1434541 bytes 如何处理?
【8月更文挑战第27天】nginx error日志 client intended to send too large body: 1434541 bytes 如何处理?
949 6
|
应用服务中间件 Linux nginx
在Linux中,如何统计ip访问情况?分析 nginx 访问日志?如何找出访问页面数量在前十位的ip?
在Linux中,如何统计ip访问情况?分析 nginx 访问日志?如何找出访问页面数量在前十位的ip?
|
存储 Ubuntu 应用服务中间件
如何在 Ubuntu VPS 上配置 Nginx 的日志记录和日志轮转
如何在 Ubuntu VPS 上配置 Nginx 的日志记录和日志轮转
208 4
|
存储 监控 应用服务中间件
查看nginx日志文件
器性能和提高网站可用性。掌握日志文件的路径、查看方法和基本分析技能对于任何服务器管理员来说都是必备技能。
991 1
|
存储 应用服务中间件 nginx
部署ELK+filebeat收集nginx日志
部署ELK+filebeat收集nginx日志
598 0
部署ELK+filebeat收集nginx日志
|
应用服务中间件 Linux nginx
Nginx log 日志文件较大,按日期生成 实现日志的切割
Nginx log 日志文件较大,按日期生成 实现日志的切割
3701 0
|
应用服务中间件 nginx
[nginx]日志中记录自定义请求头
[nginx]日志中记录自定义请求头
205 0
|
应用服务中间件 Shell nginx
shell分析nginx日志的一些指令
shell分析nginx日志的一些指令
170 0