Frage Wie kann ich die Nginx-Protokollierung deaktivieren?


Ich habe folgendes in der Konfigurationsdatei

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;

Aber es wird immer noch protokolliert example.com virtueller Host Was mache ich falsch?


19
2017-10-05 04:03


Ursprung


Was beabsichtigen Sie hier "hauptsächlich" zu tun? - Evan Carroll
Ich habe diese Frage zum Entfernen markiert, weil die am häufigsten aktualisierte Antwort mit Ihrem Syntaxfehler zu tun hat. Es hat nichts damit zu tun, die Fehlerprotokollierung auszuschalten. Es gibt keine durchsuchbaren Fehlermeldungen, und ich bin mir nicht sicher, was Sie fragen oder warum die bereitgestellten Antworten Ihr Problem nicht lösen. - Evan Carroll


Antworten:


Du fehlst ; nach der Anweisung server_name. access_log und off werden als zusätzliche server_names behandelt.


24
2017-10-05 04:55



Darüber hinaus error_log off; Fehlerprotokollierung wird nicht deaktiviert. Es protokolliert nur Fehler in einer Datei mit dem Namen "aus". Es gibt keine Möglichkeit, die Fehlerprotokollierung vollständig zu deaktivieren, der nächste, den Sie erhalten können, ist error_log / dev / null crit; Das ist fast das Gleiche, da kein Fehlerprotokoll erscheint. - kolbyjack
Eigentlich tun access_log off; bewirkt, dass nginx das Protokoll in die Datei namens call schreibt off. Das ist also keine richtige Antwort. - user965363
Eigentlich ist das die richtige Antwort. "Wenn" off "als einziger Parameter verwendet wird, werden alle access_log-Anweisungen für die aktuelle Ebene gelöscht": wiki.ninx.org/HttpLogModule#access_log. Es ist nicht wahr für error_log (wie von @kolbyjack hinzugefügt), aber ich glaube, die Frage war der Zugriff, nicht das Fehlerprotokoll. Es ist möglich, dass einige sehr alte Versionen von nginx dies nicht unterstützen. - rvs
Gibt es einen Vorteil zu verwenden? off anstatt /dev/null? Ob off verursacht einige Versionen von Nginx schreiben in eine Datei mit dem Namen off, dann /dev/null scheint eine universellere Lösung zu sein. - Joe Mornin


Natürlich können Sie die Protokollierung komplett deaktivieren. Richte die Logfiles einfach auf / dev / null und fertig. ;)

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

15
2017-10-08 04:56



Ich benutze diesen auch; /dev/null ist ein echtes Ziel; während "aus" eine Datei in einem Verzeichnis ist - edoceo
Dies ist nicht der offizielle Weg, dies zu tun. "Aus" ist der richtige Weg. - user1751825
Ich habe es gemacht / var / null und jetzt beginnt es, Logs in der Datei namens "null" im var-Verzeichnis zu speichern. Sollte es nur "/ dev / null" sein? - Gaurav


Sie können deaktivieren access_log durch die Nutzung

access_log off;

aber wenn Sie error_log deaktivieren möchten, verwenden Sie nicht die Option error_log in Ihrem Conf.


6
2017-12-13 16:14



Wie fügt sich das zu den früheren Antworten hinzu? - Dave M
Cuz, vorherige Antwort ist unbrauchbar! Benutze das nicht - Mustafa Özgür
Wenn die Konfiguration keine Fehlerprotokoll-Option enthält, verwendet nginx standardmäßig "error_log logs / error.log error": nginx.org/en/docs/ngx_core_module.html#error_log - Julian Ladisch
Ja Mann, das stimmt. Also, sollten wir / dev / null oder etwas anderes? Was ist dein Vorschlag? - Mustafa Özgür


Es sollte ziemlich einfach sein, Sie könnten die Log-Zeilen auskommentieren

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;

und wenn du einen kritischen Fehler bekommst, solltest du es so machen:'error_log / dev / null crit; 'so wird es sein:

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;

0
2017-12-13 18:48