Nginx 日志

Nginx 日志

nginx运行过程中,会留下很多日志。每访问一次就会生成一条日志。

Nginx有非常灵活的日志记录模式,每个级别的配置可以有各自独立的访问日志。日志格式通过log_format命令定义格式

# 查看nginx的正确日志
[root@web01 ~]# cat /var/log/nginx/access.log

# 查看nginx的错误日志
[root@web01 ~]# cat /var/log/nginx/error.log

1.log_format语法

# 配置语法: 包括: error.log access.log
Syntax: log_format name [escape=default|json] string ...;
Default: log_format combined "...";
Context: http

2.默认日志格式

 log_format main '$remote_addr - $remote_user [$time_local] "$request"
'
 '$status $body_bytes_sent "$http_referer" '
 '"$http_user_agent" "$http_x_forwarded_for"';
 
 192.168.15.8 - - [2021-04-27T10:13:58+08:00] "GET /images/modewin/help0.png HTTP/1.1" 200 27947 "http://www.tank.com/css/tank.css" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36" "-"

3..log_format常⽤变量

$remote_addr        # 记录客户端IP地址
$remote_user        # 记录客户端用户名
$time_local         # 记录通用的本地时间
$time_iso8601       # 记录ISO8601标准格式下的本地时间
$request            # 记录请求的方法以及请求的http协议
$status             # 记录请求状态码(用于定位错误信息)
$body_bytes_sent    # 发送给客户端的资源字节数,不包括响应头的大小
$bytes_sent         # 发送给客户端的总字节数
$msec               # 日志写入时间。单位为秒,精度是毫秒。
$http_referer       # 记录从哪个页面链接访问过来的
$http_user_agent    # 记录客户端浏览器相关信息
$http_x_forwarded_for #记录经过的所有服务器的IP地址
$X-Real-IP		   #记录起始的客户端IP地址和上一层客户端的IP地址
$request_length     # 请求的长度(包括请求行, 请求头和请求正文)。
$request_time       # 请求花费的时间,单位为秒,精度毫秒
# 注:如果Nginx位于负载均衡器,nginx反向代理之后, web服务器无法直接获取到客 户端真实的IP地址。
# $remote_addr获取的是反向代理的IP地址。 反向代理服务器在转发请求的http头信息中,
# 增加X-Forwarded-For信息,用来记录客户端IP地址和客户端请求的服务器地址。

4.nginx⽇志切割

# 使⽤logrotate切割⽇志
[root@web02 nginx]# cat /etc/logrotate.d/nginx
/var/log/nginx/*.log {   #要切割的⽇志存放位置
 daily		 #每天切割⽇志
 missingok		#⽇志丢失忽略
 rotate 52 	 #⽇⾄保留时间
 compress		#⽇志⽂件压缩
 delaycompress		 #延时压缩
 not if empty		#不切割空间
 create 640 nginx adm		 #指定⽇志⽂件权限
 sharedscripts		#脚本起始
 postrotate		 #标注脚本内容
 if [ -f /var/run/nginx.pid ]; then
 kill -USR1 `cat /var/run/nginx.pid`
 fi
 endscript		#脚本结束
}

5.日志使用json格式模板 **

[root@web02 ~]# vim /etc/nginx/nginx.conf
#在http { 里面 access_log  /var/log/nginx/access.log  main;下一行写
log_format access_json '{"@timestamp":"$time_iso8601",'
                           '"host":"$server_addr",'
                           '"clientip":"$remote_addr",'
                           '"size":$body_bytes_sent,'
                           '"responsetime":$request_time,'
                           '"upstreamtime":"$upstream_response_time",'
                           '"upstreamhost":"$upstream_addr",'
                           '"http_host":"$host",'
                           '"url":"$uri",'
                           '"domain":"$host",'
                           '"xff":"$http_x_forwarded_for",'
                           '"referer":"$http_referer",'
                           '"status":"$status"}';

access_log  /var/log/nginx/access.log  access_json;     #启用json格式

原文地址:https://www.cnblogs.com/caodan01/p/14710555.html