登录到 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 以满足你的需求。