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,如需转载请自行联系原作者



相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
28天前
|
存储 JSON 应用服务中间件
Higress的日志收集中,底层用的是Envoy,可不可以实现类似NGINX的rsyslog发送?
【2月更文挑战第30天】Higress的日志收集中,底层用的是Envoy,可不可以实现类似NGINX的rsyslog发送?
15 2
|
3月前
|
Java 应用服务中间件 nginx
微服务框架(二十九)Logstash Nginx 日志上报
此系列文章将会描述Java框架Spring Boot、服务治理框架Dubbo、应用容器引擎Docker,及使用Spring Boot集成Dubbo、Mybatis等开源框架,其中穿插着Spring Boot中日志切面等技术的实现,然后通过gitlab-CI以持续集成为Docker镜像。 本文为Logstash Nginx 日志上报 本系列文章中所使用的框架版本为Spring Boot 2.0.3...
|
10天前
|
运维 监控 应用服务中间件
LNMP详解(十四)——Nginx日志详解
LNMP详解(十四)——Nginx日志详解
16 2
|
15天前
|
存储 Java
用logrote和split分割nohup.out日志
用logrote和split分割nohup.out日志
|
1月前
|
域名解析 网络协议 应用服务中间件
nginx-ingress通过ipv6暴露服务,并在nginx ingress日志中记录客户端真实ipv6的ip地址
本文主要通过阿里云提供的clb和nlb来实现,建议是提前创建好双栈的vpc和vsw(使用clb可以不用双栈vpc和vsw)
175 1
|
3月前
|
负载均衡 应用服务中间件 nginx
【实践】使用Nginx作为GrayLog日志接入的负载均衡
【实践】使用Nginx作为GrayLog日志接入的负载均衡
43 0
|
3月前
|
监控 安全 前端开发
Nginx 访问日志中有 Get 别的网站的请求是什么原因?
Nginx 访问日志中有 Get 别的网站的请求是什么原因?
33 0
|
3月前
|
消息中间件 JSON 负载均衡
ELK7.x日志系统搭建 2. Nginx、Cluster等日志收集
ELK7.x日志系统搭建 2. Nginx、Cluster等日志收集
111 0
|
3月前
|
存储 监控 Ubuntu
日志切割工具-Logrotate实现nginx日志切割
日志切割工具-Logrotate实现nginx日志切割
36 0
|
3月前
|
应用服务中间件 nginx
nginx日志模块 ngx_http_log_module
nginx日志模块 ngx_http_log_module