插件窝 干货文章 nginx日志记录级别如何设置

nginx日志记录级别如何设置

日志 Nginx 级别 Log 428    来源:    2025-05-07

Nginx 日志记录级别设置指南

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;

最佳实践建议

  1. 生产环境建议使用 warnerror 级别
  2. 调试时可以使用 debug 级别,但要注意性能影响
  3. 定期轮转日志文件以防止磁盘空间耗尽
  4. 敏感信息(如密码)不应记录在日志中

日志轮转配置

可以设置 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
}

通过合理设置日志级别,您可以平衡故障排查需求和系统性能之间的关系。