Nginx支持8种日志级别(从详细到精简排列),用于控制日志输出的详细程度,各级别适用场景如下:
Nginx的主配置文件通常位于以下路径之一,可通过nginx -t命令(测试配置文件语法时会显示配置文件路径)确认:
/etc/nginx/nginx.conf(默认主配置文件)/usr/local/nginx/conf/nginx.conf(源码编译安装的默认路径)/etc/nginx/conf.d/default.conf(虚拟主机配置文件,部分系统使用)使用文本编辑器(如vim、nano)打开配置文件,例如:
sudo vim /etc/nginx/nginx.conf
在配置文件中,日志级别主要通过error_log指令(控制错误日志)和access_log指令(控制访问日志)设置,两者可分别配置。
error_log指令用于定义错误日志的存储路径和日志级别,语法格式为:
error_log /path/to/error.log level;
info级别(默认),存储到/var/log/nginx/error.log:error_log /var/log/nginx/error.log info;
debug级别(详细调试),存储到/var/log/nginx/debug_error.log:error_log /var/log/nginx/debug_error.log debug;
error_log指令可放置在http、server或location块中,级别会覆盖上级块的设置(如server块中的设置会覆盖http块中的同名设置)。access_log指令用于定义访问日志的存储路径、日志格式和日志级别(部分格式支持级别过滤),语法格式为:
access_log /path/to/access.log format level;
combined格式(默认)并设置日志级别为info,存储到/var/log/nginx/access.log:access_log /var/log/nginx/access.log combined info;
my_format并设置日志级别为warn:log_format my_format '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent"';
access_log /var/log/nginx/access.log my_format warn;
access_log的日志级别需配合支持的日志格式(如combined、main)使用,且并非所有格式都支持级别过滤(如main格式支持,自定义格式可能不支持)。编辑完成后,保存文件并退出编辑器(vim中按Esc→输入:wq→回车)。
使用以下命令检查配置文件语法是否正确:
sudo nginx -t
若输出nginx: configuration file /etc/nginx/nginx.conf test is successful,则表示配置正确。
配置语法正确后,使用以下命令重新加载Nginx,使日志级别设置生效:
sudo systemctl reload nginx # 推荐(适用于systemd系统)
或
sudo service nginx reload # 适用于旧版SysVinit系统
debug)会记录大量细节,显著增加磁盘I/O和存储占用,可能降低Nginx性能,生产环境严禁使用debug级别。logrotate)定期清理旧日志,避免磁盘空间耗尽。http块设为info,server块设为warn),实现精细化日志管理。