Nginx错误日志级别debug、info、notice由低到高表示日志详细程度,设为某级即记录该级及更严重事件:debug最细(需--with-debug编译),info记录启停等基础事件,notice聚焦关键状态变化;配置统一用error_log path level;,作用域内以最内层为准。

在 Nginx 中配置错误日志级别,核心是用 error_log 指令指定路径和级别,而 debug、info、notice 是三个由低到高的日志详细程度层级——越低越细,越高越精简。它们不是“功能不同”,而是“记录范围不同”:设为某一级,就记录该级及其更严重的所有事件。
debug、info、notice 的实际区别
这三个级别主要体现为日志信息的粒度和用途差异:
-
debug:最细粒度,记录变量值、配置加载步骤、内存分配细节、信号处理过程等。适合排查模块行为异常或内部逻辑问题,但需编译时启用
--with-debug,且会产生海量日志,生产环境禁用。 - info:记录服务启停、worker 进程创建、模块加载成功、连接建立/关闭等基础运行事件。比 debug 少很多细节,适合观察服务生命周期,但日常运维中仍偏冗余。
-
notice:聚焦关键状态变化,比如重载配置成功(
signal process started)、SSL 证书加载完成、某些非致命但值得关注的操作结果。它不报错也不警告,只是“告诉你发生了什么重要事”,适合作为轻量级监控入口。
怎么配置这三级日志
语法统一为:error_log /path/to/file level;,可放在 main、http、server 等上下文中。例如:
- 全局开启 info 级别:
error_log /var/log/nginx/error.log info; - 仅某个 server 块用 notice:
server { error_log /var/log/nginx/app_error.log notice; ... } - 调试特定 location 时临时加 debug(确认已编译支持):
location /api/ { error_log /tmp/debug_api.log debug; ... }
注意:同一配置块内只能有一个 error_log 指令;若多个块都定义了,以最内层(如 location)为准。
选哪一级更合适
不能只看“名字”,要看你当前要解决什么问题:
- 查 502/504 但 error 日志没线索?→ 临时调到 warn 或 error,比 info 更聚焦异常链路。
- 怀疑 SSL 握手失败或 upstream 路由异常?→ notice 可看到证书加载、upstream 初始化是否成功。
- 定位 rewrite 规则不生效或变量未赋值?→ 必须用 debug,但务必限制作用域并及时降级。
info 和 notice 在生产环境极少单独使用;notice 更常作为 warn 的补充,用于确认配置变更生效;info 则容易淹没有效信息,一般只在灰度验证阶段短时启用。
常见误区提醒
很多人以为设成 info 就能“看到更多错误”,其实不然:
- info 不会记录 warn/error 类错误的额外细节,它只是多记一些“正常但重要的事”。真正报错仍归 error 及以上级别管。
- notice 不等于“不重要”,比如
could not build optimal server_names_hash这类提示就出现在 notice 级,但它可能引发域名匹配失败。 - debug 日志默认不可用,即使写了
error_log ... debug,Nginx 启动会报错或静默忽略——必须确认编译参数含--with-debug。
不复杂但容易忽略。


















