Есть ли способ сохранить главный журнал процесса в STDOUT STDERR вместо файла?
Кажется, что вы можете передать путь к файлу только директиве access_log:
access_log /var/log/nginx/access.log
То же самое и с error_log:
error_log /var/log/nginx/error.log
Я понимаю, что это может просто не быть особенностью nginx, меня бы заинтересовало краткое решение, которое, например, использует хвост. Хотя предпочтительно, чтобы он исходил от главного процесса, потому что я запускаю nginx на переднем плане.
Ответы:
Изменить: похоже, что nginx теперь поддерживает,
error_log stderr;
как указано в ответе Anon .Вы можете отправить логи по адресу
/dev/stdout
. Вnginx.conf
:изменить: может потребоваться запустить ln -sf / proc / self / fd / dev / при использовании определенных контейнеров докеров, а затем использовать
/dev/fd/1
или/dev/fd/2
источник
ENXIO
когда stdout открыт для сокета, а не для файла. Существует билет ядра восходящего потока, указывающий, что это сделано намеренно и намеренно: bugzilla.kernel.org/show_bug.cgi?id=1360 - таким образом, хотя в некоторых случаях этого ответа достаточно, он не полностью охватывает диапазон возможных неудачи.stderr
согласно документам)Если вопрос связан с докером ... официальные образы докеров nginx делают это, создавая мягкие ссылки на stdout / stderr
RUN ln -sf /dev/stdout /var/log/nginx/access.log && ln -sf /dev/stderr /var/log/nginx/error.log
ССЫЛКА: https://microbadger.com/images/nginx
источник
FROM nginx:alpine RUN ln -sf /dev/stdout /var/log/nginx/access.log \ && ln -sf /dev/stderr /var/log/nginx/error.log CMD ["nginx-debug", "-g", "daemon off;"]
http://nginx.org/en/docs/ngx_core_module.html#error_log
Не используйте:
/dev/stderr
это нарушит вашу настройку, если вы собираетесь использовать systemd-nspawn.источник
При запуске Nginx в контейнере Docker имейте в виду, что том, смонтированный над каталогом журналов, лишает смысла создание мягкой ссылки между файлами журнала и stdout / stderr в вашем Dockerfile, как описано в ответе @Boeboe .
В этом случае вы можете либо создать программную ссылку в своей точке входа (выполняется после монтирования томов), либо вообще не использовать том (например, когда журналы уже собраны центральной системой ведения журналов).
источник
В образе докера PHP-FPM я видел такой подход:
источник
Для отладки:
Для классической цели
требовать
Под кронштейном сервера в файле конфигурации
источник