Jak wyłączyć rejestrowanie Nginx?


27

Mam następujące w pliku konfiguracyjnym

server {
    listen       80;
    server_name  _;
    access_log  /var/log/nginx/access.log  main;
  ...

server {
    listen       80;
    server_name  example.com
    access_log  off;
    error_log off;

Ale nadal rejestruje się dla example.comwirtualnego hosta. Co ja robię źle?


Co zamierzasz tutaj zrobić?
— Evan Carroll,

Oznaczono to pytanie do usunięcia, ponieważ najbardziej pozytywna odpowiedź dotyczy twojego błędu składniowego. Nie ma to nic wspólnego z wyłączeniem rejestrowania błędów. Nie zawiera komunikatów o błędach, które można przeszukiwać, i nie jestem pewien, o co pytasz ani dlaczego podane odpowiedzi nie rozwiązują Twojego problemu.
— Evan Carroll,

Odpowiedzi:


31

Brakuje ;po dyrektywie nazwa_serwera. access_logi offsą traktowane jako dodatkowe nazwy serwerów.


12
Ponadto error_log off; nie wyłącza rejestrowania błędów. Po prostu rejestruje błędy w pliku o nazwie „off”. Nie ma sposobu, aby całkowicie wyłączyć rejestrowanie błędów, najbliższe, jakie można uzyskać, to error_log / dev / nullryt; co jest prawie takie samo, ponieważ nie pojawi się dziennik błędów.
— kolbyjack

6
W rzeczywistości robienie access_log off;powoduje , że nginx zapisuje dziennik do pliku o nazwie off. To nie jest poprawna odpowiedź.
— user965363 17.10.11

4
Właściwie to właściwa odpowiedź. „Użycie„ wyłączony ”jako jedyny parametr usuwa wszystkie dyrektywy access_log dla bieżącego poziomu”: wiki.nginx.org/HttpLogModule#access_log . Nie jest to prawdą w przypadku dziennika błędów (dodanego przez @kolbyjack), ale uważam, że pytanie dotyczyło dostępu, a nie dziennika błędów. Możliwe, że niektóre bardzo stare wersje nginx nie obsługują tego.
— rvs

Czy jest korzyść z używania offzamiast /dev/null? Jeśli offpowoduje, że niektóre wersje Nginx zapisują do pliku o nazwie off, /dev/nullwydaje się bardziej uniwersalnym rozwiązaniem.
— Joe Mornin

20

Oczywiście możesz całkowicie wyłączyć rejestrowanie. Po prostu wskaż pliki dziennika na / dev / null i gotowe. ;)

access_log  /dev/null;
error_log /dev/null;

3
Ja też tego używam; /dev/nullto prawdziwy cel podróży; podczas gdy „off” jest plikiem w jakimś katalogu
— edoceo,

4
To nie jest oficjalny zalecany sposób na zrobienie tego. Używanie „off” jest właściwym sposobem.
— user1751825,

Zrobiłem to / var / null, a teraz zaczyna zapisywać dzienniki w pliku o nazwie „null” w katalogu var. Czy powinno to być tylko „/ dev / null”?
— Gaurav

13

możesz wyłączyć access_logza pomocą

access_log off;

ale jeśli chcesz wyłączyć error_log, po prostu nie używaj opcji error_log w swoim conf.


2
Jak to się dodaje do wcześniejszych odpowiedzi?
— Dave M

1
Bo poprzednia odpowiedź jest bezużyteczna! Nie używaj tego
— Mustafa Özgür

2
Jeśli config nie zawiera opcji error_log, domyślnie nginx to „log_logowania_błędów / error.log error”: nginx.org/en/docs/ngx_core_module.html#error_log
— Julian Ladisch

tak stary, właśnie tak. więc powinniśmy / dev / null czy coś jeszcze? jaka jest twoja sugestia?
— Mustafa Özgür

Ta odpowiedź jest błędna, ponieważ spowoduje utworzenie pliku dziennika „/ usr / share / nginx / off”
— DanielKhan

1

Powinno to być dość proste, możesz skomentować linie dziennika

server {
    listen       80;
    server_name  _;
    #access_log  /var/log/nginx/access.log  main;
  ...

server {
    listen       80;
    server_name  example.com
    #access_log  off;
    #error_log off;

a jeśli pojawią się błędy krytyczne, powinieneś to zrobić w następujący sposób: errerror_log / dev / nullryt; so więc będzie to:

server {
    listen       80;
    server_name  _;
    access_log  /dev/null crit;
  ...

server {
    listen       80;
    server_name  example.com
    access_log  /dev/null crit;
    error_log /dev/null crit;

Nie używaj „off”. Jak wspomniano poniżej, utworzy to plik dziennika o nazwie „off” w katalogu domowym nginx.
— DanielKhan

0

Oparty na logowaniu warunkowym w poście Nginx, ale zamiast używać zmiennej do ustalenia przy logowaniu żądania, wystarczy użyć stałej wartości 0.

server {
listen       80;
server_name  _;
access_log  /var/log/nginx/access.log  main;
}

server {
listen       80;
server_name  example.com
access_log  /var/log/nginx/access.log if=0;
error_log /var/log/nginx/error.log if=0;
}
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.