Czy istnieje sposób, aby główny dziennik procesu do STDOUT STDERR zamiast do pliku?
Wygląda na to, że możesz przekazać ścieżkę pliku tylko do dyrektywy access_log:
access_log /var/log/nginx/access.log
To samo dotyczy error_log:
error_log /var/log/nginx/error.log
Rozumiem, że może to po prostu nie być cechą nginx, byłbym zainteresowany na przykład zwięzłym rozwiązaniem wykorzystującym tail. Zaleca się jednak, aby pochodziła z procesu głównego, ponieważ na pierwszym planie uruchamiam nginx.
Odpowiedzi:
Edycja: wygląda na to, że nginx obsługuje teraz,
error_log stderr;
jak wspomniano w odpowiedzi Anona .Możesz wysłać dzienniki do
/dev/stdout
. Wnginx.conf
:edycja: Może być konieczne uruchomienie ln -sf / proc / self / fd / dev / jeśli używasz niektórych kontenerów docker, a następnie użyj
/dev/fd/1
lub/dev/fd/2
źródło
ENXIO
gdy standardowe wyjście jest otwarte dla gniazda, a nie pliku. Istnieje bilet jądra źródłowego wskazujący, że jest to zamierzone i zamierzone: bugzilla.kernel.org/show_bug.cgi?id=1360 - tak więc, chociaż ta odpowiedź jest wystarczająca w niektórych przypadkach, nie obejmuje w pełni awarie.stderr
Jeśli pytanie dotyczy Dockera ... oficjalne obrazy Dockera Nginx robią to, tworząc miękkie linki do stdout / stderr
RUN ln -sf /dev/stdout /var/log/nginx/access.log && ln -sf /dev/stderr /var/log/nginx/error.log
ODNIESIENIE: https://microbadger.com/images/nginx
źródło
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
Nie używaj:
/dev/stderr
spowoduje to uszkodzenie konfiguracji, jeśli zamierzasz używać systemd-nspawn.źródło
Podczas uruchamiania Nginx w kontenerze Docker należy pamiętać, że wolumin zamontowany nad katalogiem dziennika jest sprzeczny z celem tworzenia miękkiego łącza między plikami dziennika a stdout / stderr w pliku Dockerfile, jak opisano w odpowiedzi @Boeboe .
W takim przypadku możesz albo utworzyć łącze programowe w punkcie wejścia (wykonywane po zamontowaniu woluminów), albo w ogóle nie używać woluminu (np. Gdy logi są już zebrane przez centralny system logowania).
źródło
W obrazie dockera PHP-FPM widziałem takie podejście:
źródło
W celu debugowania:
Do klasycznego celu
Wymagać
Pod nawiasem serwera w pliku konfiguracyjnym
źródło