Nginx-第四篇:在实践中对日志格式详解和日志文件按日期进行分割

本文介绍了Nginx中access.log和error.log的作用,并详细解析了access.log的格式配置及内容,包括如何自定义日志格式及通过Shell脚本实现日志文件按日期分割的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一部分:日志格式详解

nginx的log日志分为:access.log 和 error.log。
access.log:主要是记录了哪些用户,哪些页面以及用户浏览器、ip和其他的访问信息。
error.log:主要记录服务器错误日志。
日志格式语法:log_format main 格式样式。打印出来的日志样式


#access日志格式配置如下:
log_format main '$remote_addr - $remote_user [$time_local] '
                'fwf[$http_x_forwarded_for] tip[$http_true_client_ip] '
                '$upstream_addr $upstream_response_time $request_time '
                '$http_host $request '
                '"$status" $body_bytes_sent "$http_referer" '
                '"$http_accept_language" "$http_user_agent" ';

#配置access log日志的存储位置及文件,注意:access.log文件是可以按日期进行分割的,方便查看及处理
access_log /usr/local/nginx/log/access.log main;

打印出来的日志信息

201.0.69.2 - - [26/Jul/2018:03:17:20 +0800] fwf[-] tip[-] 127.0.0.1:7029 0.037 0.037  180.159.12.115:7029 POST /HLXY99/dex.htm HTTP/1.1 "200" 2426 "http://abc.com" "es-ES,es;q=0.8" "Jakarta Commons-HttpClient/3.0"

具体格式分析

从上面我们可以看出几部分信息:
01.【$remote_addr】客户端(用户)IP地址。如:上例中的 201.0.69.2
02.【$remote_user】 记录客户端用户名称
03.【[$time_local]】访问时间。如:上例中的 [26/Jul/2018:03:17:20 +0800]
04.【$upstream_addr】访问端口。如:上例中的 127.0.0.1:7029
05.【$upstream_response_time】响应时间。如:上例中的 0.037
06.【$request_time】请求时间。如:上例中的 0.037
07.【$http_host】请求的url地址(目标url地址)的host。如:上例中的 180.159.12.115:7029
08.【$request】请求方式(GET或者POST等)。如:上例中的 POST
09.请求url地址(去除host部分)。如:上例中的 /HLXY99/dex.htm
10.【"$status"】请求状态(状态码,200表示成功,404表示页面不存在,301表示永久重定向等)。如:上例中的 "200"
11.【$body_bytes_sent】请求页面大小,默认为B(byte)。如:上例中的 2426
12.【"$http_referer"】来源页面,即从哪个页面转到本页,专业名称叫做“referer”。如:上例中的 "http://abc.com"
13.【"$http_accept_language"】用户浏览器语言。如:上例中的 "es-ES,es;q=0.8"
14.【"$http_user_agent"】用户浏览器其他信息,浏览器版本、浏览器类型等。如:上例中的  "Jakarta Commons-HttpClient/3.0"
15.【$time_iso8601】ISO8601标准格式下的本地时间。
其实nginx access。log日志的格式不是一成不变的,是可以自定义的。
在nginx的nginx.conf配置文件找到:log_format 这里就是日志的格式

第二部分:日志文件按日期进行分割

步骤1:编写shell脚本(在/usr/local/nginx/shellTask/下,编辑vi nginx_log.sh)


#nginx日志切割脚本
#author:lixy

#!/bin/bash
#设置日志文件存放目录
logs_path="/home/nginx/nginx/logs/"
#设置pid文件
pid_path="/home/nginx/nginx/logs/nginx.pid"
#重命名日志文件
mv ${logs_path}access.log ${logs_path}access_$(date -d "yesterday" +"%Y%m%d").log
#向nginx主进程发信号重新打开日志

kill -USR1 `cat ${pid_path}`

步骤2:设置定时任务,crontab 设置作业

设置定时任务,crontab 设置作业
1.编辑任务
crontab –e
2.每天凌晨00:00定时执行这个脚本
00 00 * * * /bin/bash /usr/local/nginx/shellTask/task_log.sh
3.查看任务
crontab -l
4.删除任务(适时使用)
crontab -r
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值