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文件。

时间: 2024-12-27 14:21:33

Nginx切割access.log的相关文章

在nginx日志access log可以记录POST请求的参数值

1)      在nginx日志access log可以记录POST请求的参数值 实现程度:日志中可以显示POST请求所提交的参数值 问题: 日志中文显示十六进制(在配置文件中配置中文也无效) 没有对json数据进行测试,正文类型为:Content-Type: application/x-www-form-urlencoded; charset=UTF-8 配置说明: log_format指令用来设置日志的记录格式,语法: log_format name format {format ...}

分析nginx中access.log日志统计状态为500

发现系统存在的问题 我们可以使用下面的命令行,统计服务器返回的状态码,发现系统可能存在的问题. awk '{print $9}' access.log | sort | uniq -c | sort 正常情况下,状态码 200 或 30x 应该是出现次数最多的.40x 一般表示客户端访问问题.50x 一般表示服务器端问题. 下面是一些常见的状态码: 200 - 请求已成功,请求所希望的响应头或数据体将随此响应返回. 206 - 服务器已经成功处理了部分 GET 请求 301 - 被请求的资源已永

在nginx日志的access log中记录post请求的参数值

背景:有时程序偶出现参数少了或没有提交到下一个链接Url里后出现问题,如何查呢,最好的办法是在nginx上的加post参数,以定位到问题才有可能对某个UIR的代码出现的问题进行排查. og_format access '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent $request_body "$http_referer" "$http_user_

python的Nginx切割脚本

#!/usr/bin/env python #date:2015-06 #Author:ley #Cur the nginx's access_log #-*-coding:UTF-8-*-  import os,time path=['/var/log/nginx/','/var/run/nginx/nginx.pid','access.log'] time=time.strftime('%Y-%m-%d') command="cd %s && /bin/cp  %s %s &

nginx关闭全局access.log,error.log

如果nginx的server里没配置access.log,nginx会默认将server的访问日志记录到access.log, 关闭方法: 在nginx.conf配置文件中, 在全局配置中添加 error_log off; 在http块中添加:access_log off; 然后在server中单独配置access.log

Nginx Access Log日志统计分析常用命令

Nginx Access Log日志统计分析常用命令 Nginx Access Log日志统计分析常用命令 IP相关统计 统计IP访问量 awk '{print $1}' access.log | sort -n | uniq | wc -l 查看某一时间段的IP访问量(4-5点) grep "07/Apr/2017:0[4-5]" access.log | awk '{print $1}' | sort | uniq -c| sort -nr | wc -l 查看访问最频繁的前100

转 Nginx Access Log日志统计分析常用命令

Nginx Access Log日志统计分析常用命令Nginx Access Log日志统计分析常用命令IP相关统计 统计IP访问量 awk '{print $1}' access.log | sort -n | uniq | wc -l 查看某一时间段的IP访问量(4-5点) grep "07/Apr/2017:0[4-5]" access.log | awk '{print $1}' | sort | uniq -c| sort -nr | wc -l 查看某个时间点的IP访问量(

nginx 切割日志文件

一.利用crontab 切割nginx日志文件(linux平台下) cat nginx_log.sh #!/bin/bash # 零点执行该脚本 # Nginx 日志文件所在的目录 LOGS_PATH=/data/opt/nginx/logs ## 获取昨天的 yyyy-MM-dd YESTERDAY=$(date -d "yesterday" +%Y-%m-%d) # 移动文件 mv ${LOGS_PATH}/access.log ${LOGS_PATH}/access_${YEST

nginx切割日志

#!/bin/bash # # Filename:    nginxCutLog.sh # Author:      Qicheng # Website:     http://qicheng0211.blog.51cto.com/ # Description: 切割nginx日志 # Notes:       设置crontab,每天23点59分定时执行 # ROOT_UID=0 if [ "$UID" -ne "$ROOT_UID" ];then     ech