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的主要内容,如果未能解决你的问题,请参考以下文章