小编典典

让 nginx access_log 和 error_log 记录到主进程的 STDOUT 和 STDERR

all

有没有办法让主进程记录到 STDOUT STDERR 而不是文件?

似乎您只能将文件路径传递给 access_log 指令:

access_log  /var/log/nginx/access.log

error_log 也是如此:

error_log /var/log/nginx/error.log

我知道这可能根本不是 nginx 的一个功能,例如,我会对使用 tail 的简洁解决方案感兴趣。最好它来自主进程,因为我在前台运行 nginx。


阅读 73

收藏
2022-07-12

共1个答案

小编典典

编辑: 似乎 nginx 现在支持error_log stderr;如Anon’sanswer中所述。

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

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

2022-07-12