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?

użytkownik965363
źródło
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.

RVS
źródło
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;
Franz Bettag
źródło
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.

Mustafa Özgür
źródło
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;
Daniel Guldberg Aaes
źródło
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;
}
Aaron
źródło