Nginx访问日志和错误日志入门

Nginx访问日志和错误日志入门

1.Nginx日志分类:访问日志和错误日志

访问日志:记录发起请求的客户端的IP地址、发起请求的时间、发起请求的方法(GET\POST等)、发起请求的HTTP协议(HTTP/1.1等)、浏览器相关信息、响应状态结果等。

错误日志:记录发起请求的客户端的IP地址、发起请求的时间、发起请求的方法(GET\POST等)、发起请求的HTTP协议(HTTP/1.1等)、服务器的调试信息、异常信息等。

当然通过Nginx的日志指令,可以设置更多信息输出到日志中,通过日志分析可以了解到网站的可用性、性能、安全性等,还可以为问题排查提供帮助。

2.访问日志配置:

指令:access_log

含义:用来设置访问日志的输出位置和选用的输出格式。输出位置可以是本地文件、syslog服务器、内存缓冲区等。

syslog服务器是专门用来存储、分析日志的服务器。

作用域:http、stream、server、location、if in location、limit except

设置方法:access_log logs/access.log main;

logs/access.log为本地存储日志文件,main为日志输出的格式。

3.访问日志格式配置

指令:log_format

含义:设置访问日志的格式

作用域:http、stream

设置方法:

(1)常用格式-比如日志格式名称为main,该名称为任意,但是不能出现重复,包括如下信息:

log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '                       '$status $body_bytes_sent "$http_referer" '                       '"$http_user_agent" "$http_x_forwarded_for"';

(2)json格式--比如日志格式名称为logjson,该名称为任意,但是不能出现重复,包括如下信息:

log_format logjson '{                           "@timestamp": "$time_local", '                          '"@fields": { '                          '"remote_addr": "$remote_addr", '                          '"remote_user": "$remote_user", '                          '"body_bytes_sent": "$body_bytes_sent", '                          '"request_time": "$request_time", '                          '"status": "$status", '                          '"request": "$request", '                          '"request_method": "$request_method", '                          '"http_referrer": "$http_referer", '                          '"http_x_forwarded_for": "$http_x_forwarded_for", '                          '"http_user_agent": "$http_user_agent" }                           }';

常配合nginx自有的变量,参见:Nginx核心指令if和set入门 Nginx中nginx.conf配置文件详解中提到的变量。

4.错误日志配置:

指令:error_log

含义:设置错误日志输出位置和日志级别。

日志级别分为8种,不支持自定义日志格式。

debug (8)、info(7)、notice(6 )、warn(5 )、error(4 )、crit (3)、alert (2 )、emerg (1)。

从1到8,记录的日志越来越详细,debug输出级别输出最为详细,配合调试使用,但是debug和info会消耗大量磁盘 IO 资源。

实际生产环境中常用的error 输出级别。

作用域:main、http、mail、stream、server、location

设置方法:error_log logs/error.log error;

logs/error.log 为错误日志存储路径,error为错误日志级别。

您可能还会对下面的文章感兴趣: