Nginx切割access.log

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx切割access.log相关的知识,希望对你有一定的参考价值。

  nginx 默认Log记录在$Nginx_home/logs/access.log里面,每次用户的请求都会追加到access.log后面,久而久之,access.log就会变得巨大,占用磁盘空间。所以就有了需求用来切割Nginx日志。使用shell脚本如下:

#!/bin/bash
# This script run at 00:00
# The Nginx logs path
logs_path="/usr/local/nginx/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
kill -USR1 `cat /usr/local/nginx/nginx.pid`

 Q:假如把access.log改名为access.log_bak后,不重启nginx服务器,那么在新的请求到达nginx服务器后日志会记录到何处,是自动创建一个access.log还是把日志记录到改名后的文件?

 A:答案为会记录到改名后的文件,因为nginx启动时会记录日志文件的Inode节点号,而通过mv的方式改名文件,并不会更改文件的inode节点号。所以会依然记录到改名后的文件。而如果改名access.log后,重新reload了Nginx程序,则会在启动时检测到access.log不存在,自动创建access.log文件。

本文出自 “小科” 博客,请务必保留此出处http://405942850.blog.51cto.com/5530023/1899756

以上是关于Nginx切割access.log的主要内容,如果未能解决你的问题,请参考以下文章

nginx日志切割

nginx 日志切割

Nginx 访问日志轮询切割

Nginx日志文件切割

线上:Nginx 日志切割

Nginx 日志切割脚本