Nginx – 日志格式及输出

未分类 麋鹿 92℃ 0评论
本文最后更新于 2020年12月29日 15:03 可能会因为没有更新而失效。如已失效或需要修正,请留言!
文章目录

在 Nginx 服务器中,如果想对日志输出进行控制还是很容易的。Nginx 服务器提供了一个 HttpLogModule 模块,可以通过它来设置日志的输出格式。

一、HttpLogModule 模块

1、预览

images

2、指令

指令名称:access_log

语法:access_log [format [buffer=size] ] | off

默认值:access_log logs/access.log combined;

使用环境:http, server, location, if in location, limit_except

指令名称:log_format

语法:log_format name [escape=default|json|none] string …;

默认值:log_format combined “…”;

使用环境:http

Nginx 日志格式中,有很多参数,总结如下:

参数 说明 示例
$remote_addr 客户端地址 14.116.133.170
$remote_user 客户端用户名称
$time_iso8601 标准格式的本地时间 2019-05-24T18:31:27+08:00
$time_local  访问时间和时区 03/Mar/2019:16:43:53 +0800
$msec 日志写入时间,单位为秒,精度是毫秒
$request 请求的URI和HTTP协议 “GET /city/static/js/illegals/vehicle-search.js HTTP/1.1”
$http_host 请求地址,即浏览器中你输入的地址(IP或域名) www.super.com 192.168.118.15
$status HTTP请求状态 200
$upstream_status upstream状态 200
$bytes_sent 发送给客户端的总字节数,包括响应头和响应体 1647
$body_bytes_sent 发送给客户端文件内容大小 ,不包括响应头 1547
$http_referer url跳转来源 https://www.baidu.com/
$http_user_agent 客户终端浏览器等信息 Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:65.0) Gecko/20100101 Firefox/65.0
$ssl_protocol SSL协议版本 TLSv1
$ssl_cipher 交换数据中的算法 RC4-SHA
$upstream_addr 后台upstream的地址,即真正提供服务的主机地址 192.168.118.16:8080
$request_length 请求长度(包括请求行,请求头和请求体)
$request_time 整个请求的总时间 0.205
$upstream_response_time 请求过程中,upstream响应时间 0.002
$http_x_forwarded_for 当前端有代理服务器时,设置web节点记录客户端地址的配置,此参数生效的前提是代理服务器也要进行相关的x_forwarded_for设置。

 

指令名称:open_log_file_cache

语法:open_log_file_cache max=N [inactive=time] [min_uses=N] [valid=time]; | open_log_file_cache off;

默认值:open_log_file_cache off;

使用环境:http、server、location

3、配置

首先,查看下 nginx 默认的日志格式:

images测试访问,查看日志:

images

注意:这里有两个 ‘- -‘    第一个 ‘-‘ 是 log_format 中定义的,第二个 ‘-‘ 是 $remote_user 变量为null时,返回的占位符。

images

这些变量通过上面表对比就能明白。
默认的日志格式可能不满足我们日常问题的排查,可以自行定义,这里通过是否需要转发后端服务器来分为 2类进行定义日志格式:

为了能够尽快的通过日志查询到异常情况,这里建议取消 http 段的全局定义日志,改为每个location 中定义一个日志文件。这样除了异常,可以快速定位。

images

这里说一下,如果这样设置了,日志是不会实时刷新的,buffer 满 32k 才写盘;假如 buffer 不满32k ,5秒钟后强制写盘。

4、测试

访问 http://172.15.35.23:8081/  日志如下:

images

根据日志可以看出:

用户请求访问的uri:GET /

整个请求总耗时:0.003

后端处理耗时:0.003

后端处理请求主机socket:”172.15.35.25:8888″

后端处理返回状态:200

 

访问 http://172.15.35.23:8081/h5/login 日志如下:

images

最后一位是 $request_time 整个请求的总时间,这里只是很短的字符串测试,所以很快就处理完成。记录为 0.000

转载请注明:百分数 » Nginx – 日志格式及输出
责任声明: 本站一切资源仅用作交流学习,请勿用作商业或违法行为!如造成任何后果,本站概不负责!
喜欢 (2)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址