15

(systemd)stdoutを介して分析できるように、nginx アクセス ログをリダイレクトしたいと考えています。journalctl

承認された回答を持つ同じ質問があります。 nginx の access_log と error_log をマスター プロセスの STDOUT と STDERR に記録しますが、うまくいき ません。と/dev/stderr私は得るopen() "/dev/stderr" failed (6: No such device or address)/dev/stdoutI get no access logs inでjournalctl -u nginx

nginx.conf

daemon off;

http {
    access_log /dev/stdout;
    error_log /dev/stdout;
    ...
}
...

サイト名.conf

server {
    server_name sitename.com;
    root /home/username/sitename.com;

    location / {
        proxy_pass http://localhost:3000/;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        access_log on;
    }
}

nginx.service

[Service]
Type=forking
PIDFile=/run/nginx.pid
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=nginx
ExecStartPre=/usr/sbin/nginx -t -q -g 'master_process on;'
ExecStart=/usr/sbin/nginx -g 'master_process on;'
ExecReload=/usr/sbin/nginx -g 'master_process on;' -s reload
ExecStop=-/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid
TimeoutStopSec=5

上記のコードで可能なすべてのパラメーターを変更し、異なるnginxバージョン(1.2、1.6)で回避するために最善を尽くしましたが、成功しませんでした。

これを機能させる方法に非常に興味があるので、以前の回答が間違っている、投機的、または環境固有であると考えているため、別のスレッドでこの質問を再度提起します。

$ journalctl -u nginx

次のような行のみが含まれています

 Feb 08 13:05:23 Username systemd[1]: Started A high performance web server and a reverse proxy server.

アクセスログの兆候はありません:(

4

2 に答える 2

19
server {
    error_log syslog:server=unix:/dev/log;
    access_log syslog:server=unix:/dev/log;
    ...
}

デフォルトのjournald構成(Ubuntu 15.04を実行しています)はsyslogから読み取るため、この構成だけでログを表示できますjournalctl -u nginx

于 2015-09-18T15:09:11.543 に答える