Nginx 提供了灵活的日志记录功能,可以通过不同的配置来控制日志记录的详细程度。以下是关于 Nginx 日志记录级别设置的详细说明:
Nginx 的错误日志(Error Log)可以通过 error_log
指令设置不同的记录级别:
error_log /path/to/error.log [level];
可用的日志级别(从详细到简洁):
1. debug
- 调试信息(最详细)
2. info
- 一般信息
3. notice
- 需要注意的信息
4. warn
- 警告信息
5. error
- 错误信息(默认级别)
6. crit
- 严重错误
7. alert
- 需要立即处理的错误
8. emerg
- 紧急情况(最简洁)
# 设置错误日志为调试级别(需要编译时启用 --with-debug)
error_log /var/log/nginx/error.log debug;
# 生产环境推荐使用 warn 级别
error_log /var/log/nginx/error.log warn;
Nginx 的访问日志(Access Log)没有像错误日志那样的级别概念,但可以通过 log_format
指令自定义记录的内容:
http {
log_format main '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';
access_log /var/log/nginx/access.log main;
}
要使用 debug
级别,Nginx 需要在编译时启用 --with-debug
选项。可以通过以下命令检查:
nginx -V 2>&1 | grep -- '--with-debug'
Nginx 还支持基于条件的日志记录:
# 只在响应状态码为5xx时记录到特定日志文件
map $status $loggable {
~^5 1;
default 0;
}
access_log /var/log/nginx/5xx.log combined if=$loggable;
warn
或 error
级别debug
级别,但要注意性能影响可以设置 logrotate 来管理 Nginx 日志文件:
/var/log/nginx/*.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
postrotate
invoke-rc.d nginx rotate >/dev/null 2>&1
endscript
}
通过合理设置日志级别,您可以平衡故障排查需求和系统性能之间的关系。