第一部分:日志格式详解

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