目录
Nginx日志主要分为两种:
access_log(访问日志):
自定义一个一个log_format并使用的方法:
log_format变量:
error_log(错误日志):
Nginx日志主要分为两种:
access_log(访问日志):记录客户端请求的信息。
error_log(错误日志):记录应用程序问题等信息。
access_log(访问日志):
客户端向Nginx服务器发起的每一次请求都记录在这里。每条记录都包含一个时间戳,包含有关客户端和所请求资源等信息,例如客户端IP、浏览器信息、请求URL等,具体要记录的可以自定义设置,即通过log_format指令定义,下面先介绍两个指令。
access_log off; #关闭当前作用域下的所有日志
access_log log_file log_format;#设置日志文件的位置和使用的格式
在第二条指令中log_file是日志文件的绝对路径,log_format是日志文件记录的格式。可以在http、server、location等指令的上下文中启用访问日志。
log_format默认使用Nginx主配置文件中的http指令上下文配置的全局访问日志格式,一般情况下每个server都会有自己单独的,在server中配置后,其优先级比http下的高。
http {
access_log /home/sdc/public/app/nginx/access.log;
......
server {
server_name test.com
access_log /home/sdc/public/app/nginx/domain.access.log;
......
}
}
如果都没有指定log_format,会自动使用系统默认名为combined的:
log_format combined '$remote_addr - $remote_user [$time_local]'
'"$request" $status $body_bytes_sent'
'"$http_referer" "$http_user_agent"';
自定义一个一个log_format并使用的方法:
log_format sdc '$remote_addr - $remote_user [$time_local] "$request"';
然后作用域中配置:
access_log /home/sdc/public/app/nginx/access.log sdc;
log_format变量:
- $body_bytes_sent:传输到客户端的字节数,不包括响应头,变量与Apache模块mod_log_config的参数%B兼容(在版本0.3.10之前称为$Apache_bytes_sent)
- $bytes_sent:传输到客户端的字节数
- $connection:连接数
- $msec:日志输入时时间精确到微秒
- $request_length:请求的正文的长度
- $request_time:处理请求的时间(秒)
- $request:请求的URL以及请求方法,例如GET / HTTP/1.1
- $status:应答状态,例如200、301、404等
- $time_local:将本地时间转换为通用日志格式
- $time_iso8601:标准格式的本地时间,例如如2022-10-03T13:33:09+08:00
- $remote_addr:客户端的IP地址(代理服务器,显示代理服务器的IP),例如10.1.23.137
- $remote_user:针对启用了用户认证的请求,记录远程客户端的HTTP身份验证用户名称
- $http_user_agent:客户端浏览器信息
- $http_x_forwarded_for:客户端IP,通过代理服务器的请求来记录客户端的IP地址。当前端有代理服务器时,设置记录客户端地址的配置,此参数生效的前提是代理服务器也要进行相关的x_forwarded_for设置。
- $http_referer:用户是从哪个链接访问的
error_log(错误日志):
它也是在http,server或location指令的上下文中设置,一般写法如下:
error_log log_file log_level;
其中log_file为错误日志存放的绝对路径。
log_level为日志级别,从详细到简略分别是:debug、info 、notice 、warn 、error 、crit 、alert 、emerg,默认的是error。 一般情况下每个server都会有自己单独的,在server中配置后,其优先级比http下的高。
http {
error_log /home/sdc/public/app/nginx/error.log;
......
server {
server_name test.com
error_log /home/sdc/public/app/nginx/test_error.log debug;
......
}
}