在使用nginx时候,我们经常需要查看对应的请求日志记录或者错误日志记录,nginx日志分两种,分别是访问日志和错误日志。

访问日志

访问日志指的是nginx常见的客户端请求信息,比如时间,路径,userAgent等信息

access_log指令语法格式如下

access_log path [format [buffer=size] [gzip[=level]] [flush=time] [if=condition]];

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

可配置的上下文:http, server, location, if in location, limit_except

常见的access_loghttp或者server上下文中配置

http {
  log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                     '$status $body_bytes_sent "$http_referer" '
                     '"$http_user_agent" "$http_x_forwarded_for"';
  access_log  /usr/local/etc/nginx/logs/access.log  main;
}

server {
  server_name static.abc.com;
  access_log /usr/local/etc/nginx/logs/access_static.log main;
}

配置完成后,需要手动在nginx目录下新建对应的文件,这里有 access.logaccess_static.log 两个文件,新建完成后,访问 static.abc.com,可以在 access_static 目录下看到对应的日志

127.0.0.1 - - [02/Feb/2021:11:10:22 +0800] "GET / HTTP/1.1" 304 0 "http://static.abc.com/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 11_1_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36" "-"

日志的格式是通过上面 log_format 来配置的

log_format指令语法格式如下

log_format name [escape=default|json|none] string ...;
log_format 指令只能配置在 http

日志格式可以使用nginx内置变量,通过$来使用,更多变量说明可以查看官方文档

错误日志

错误日志主要记录客户端访问出错或者服务常见错误,比如502等的日志

error_log指令语法格式如下

error_log file [level];

默认值:error_log logs/error.log error;

可配置的上下文:main, http, mail, stream, server, location

error_log无法配置格式,但是可以配置等级,默认是error,可选值如下:debug | info | notice | warn | error | crit | alert | emerg