在 Nginx 中,“过滤错误日志”通常指两件事之一:
下面分别说明。
Nginx 错误日志级别(从低到高):
debug < info < notice < warn < error < crit < alert < emerg
示例(只记录 warn 及以上):
error_log /var/log/nginx/error.log warn;
常见做法:
error 或 critdebug(需 --with-debug 编译)不同 location 使用不同日志:
server {
error_log /var/log/nginx/error.log error;
location /api/ {
error_log /var/log/nginx/api_error.log warn;
}
location /static/ {
error_log off; # 关闭错误日志
}
}
Nginx 不能直接“忽略某类错误”,但可以:
error_log 级别降低噪声lua / split_clients 等高级模块控制示例(OpenResty / Lua):
error_log /var/log/nginx/error.log;
lua_shared_dict err_filter 10m;
init_by_lua_block {
ngx.shared.err_filter:set("ignore_404", true)
}
grep "connect() failed" /var/log/nginx/error.log
grep -v "No such file" /var/log/nginx/error.log
awk '$1 >= "[2024-01-01" && $1 <= "[2024-01-02"' /var/log/nginx/error.log
grep -E "\[error\]|\[crit\]" /var/log/nginx/error.log
| 错误 | 建议 |
|---|---|
open() ".../favicon.ico" failed |
放默认 favicon 或忽略 |
client closed connection |
正常,可降低日志级别 |
upstream timed out |
保留,重要 |
SSL handshake failed |
按需保留 |
error_log level 控制噪声error_log off 全局关闭grep / awk 分析如果你愿意,可以告诉我:
我可以给你更精确的配置。