登录到 Syslog incl。HTTP 代码到 Syslog 严重性的映射
将此片段粘贴到 http {}
块中的某个位置; 或者将它放在/etc/nginx/conf.d/
文件夹中的自己的文件中。另请参阅登录 syslog 的官方文档 。
#
# Access Log
#
log_format fmt_syslog '[$time_local] $status $remote_addr $http_host "$request" $body_bytes_sent $request_time "$http_user_agent" $remote_user';
map $status $log_is_error { "~^5\d\d" 1; default 0; }
map $status $log_is_warn { "~^4[0-8]{2}" 1; default 0; }
map $status $log_is_info { "~^[1-3]\d\d" 1; default 0; }
access_log syslog:server=unix:/run/systemd/journal/syslog,nohostname,facility=local2,severity=error fmt_syslog if=$log_is_error;
access_log syslog:server=unix:/run/systemd/journal/syslog,nohostname,facility=local2,severity=warn fmt_syslog if=$log_is_warn;
access_log syslog:server=unix:/run/systemd/journal/syslog,nohostname,facility=local2,severity=info fmt_syslog if=$log_is_info;
#
# Error Log
#
error_log syslog:server=unix:/run/systemd/journal/syslog,nohostname,facility=local2 error;
此示例假设 rsyslog(或类似)正在侦听 Socket /run/systemd/journal/syslog
- 因为当 journald 激活 ForwardToSyslog 时它是 Debian 8 上的默认值。使用此套接字,你可以绕过 journald。如果该套接字不可用,请尝试使用/dev/log
。
随意使用其他设施而不是 local2。你也可以更改 log_format 以满足你的需求。