有没有办法让主进程记录到 STDOUT STDERR 而不是文件?
似乎您只能将文件路径传递给 access_log 指令:
access_log /var/log/nginx/access.log
error_log 也是如此:
error_log /var/log/nginx/error.log
我知道这可能根本不是 nginx 的一个功能,例如,我会对使用 tail 的简洁解决方案感兴趣。最好它来自主进程,因为我在前台运行 nginx。
编辑: 似乎 nginx 现在支持error_log stderr;如Anon’sanswer中所述。
error_log stderr;
Syntax: error_log file | stderr | syslog:server=address[,parameter=value] | memory:size [debug | info | notice | warn | error | crit | alert | emerg]; Default: error_log logs/error.log error; Context: main, http, stream, server, location
您可以将日志发送到/dev/stdout. 在nginx.conf:
/dev/stdout
nginx.conf
daemon off; error_log /dev/stdout info; http { access_log /dev/stdout; ... }
编辑:如果使用运行某些 docker 容器,可能需要运行ln -sf /proc/self/fd /dev//dev/fd/1 ,然后使用或/dev/fd/2
/dev/fd/1
/dev/fd/2