So konfigurieren Sie benutzerdefinierte Zugriffs-und Fehlerprotokollformate in Nginx

So konfigurieren Sie benutzerdefinierte Zugriffs-und Fehlerprotokollformate in Nginx

Nginx HTTP Server verfügt über eine phänomenale Protokollierungsfunktion, die hochgradig anpassbar ist. In diesem Artikel wird erläutert, wie Sie eigene Formate für Zugriffs-und Fehlerprotokolle für Nginx unter Linux konfigurieren.

Ziel dieses Handbuchs ist es, Ihnen zu helfen, zu verstehen, wie Protokolle generiert werden, um benutzerdefinierte Protokollformate für Debugging, Fehlerbehebung oder Analyse der Vorgänge auf Ihrem Webserver sowie für Webanwendungen (z. B. Tracing-Anforderungen) zu konfigurieren.,

Lesen Sie auch: 4 Gute Open-Source-Protokollüberwachungs-und-Verwaltungstools für Linux

Dieser Artikel besteht aus drei Abschnitten, die Sie über die Konfiguration von Zugriffs – /Fehlerprotokollen und die Aktivierung der bedingten Protokollierung in Nginx informieren.

Konfigurieren von Zugriffsprotokollen in Nginx

Unter Nginx werden alle Clientanforderungen an den Server mithilfe des Moduls ngx_http_log_module im Zugriffsprotokoll in einem bestimmten Format wiederhergestellt.

Die Standardprotokolldatei ist log/access.,log (normalerweise /var / log / nginx / access_log auf Linux-Systemen) und das Standardformat für die Protokollierung ist normalerweise das kombinierte oder Hauptformat (dies kann von einer Distribution zur anderen variieren).

Die access_log-Direktive (anwendbar im HTTP -, Server -, Location -, if in location-und Limit-Except-Kontext) wird verwendet, um die Protokolldatei festzulegen, und die log_format-Direktive (anwendbar nur im http-Kontext) wird verwendet, um das Protokollformat festzulegen. Das Protokollformat wird durch allgemeine Variablen und Variablen beschrieben, die nur zum Zeitpunkt des Schreibens eines Protokolls generiert wurden.,

Die Syntax zum Konfigurieren eines Protokollformats lautet:

log_format format_name 'set_of_variables_to_define_format';

und die Syntax zum Konfigurieren des Zugriffsprotokolls lautet:

Das Folgende ist ein Auszug aus der Standard-Nginx-Konfigurationsdatei /etc/nginx/nginx.conf auf CentOS 7.

/etc/nginx/nginx.conf

Dieses Protokollformat ergibt den folgenden Protokolleintrag.

Das Folgende ist ein weiteres nützliches Protokollierungsformat, das wir zum Verfolgen von Anforderungen an unsere Webanwendungen verwenden, wobei einige der Standardvariablen verwendet werden, es hat vor allem die Anforderungs-ID und protokolliert Clientstandortdetails (Land, Ländercode, Region und Stadt).,

/etc/nginx/nginx.conf

Sie können es so verwenden:

access_log /var/log/nginx/access.log custom;

Dies erzeugt einen Protokolleintrag, der so angezeigt wird.

Sie können mehrere Protokolle mit den access_log-Direktiven auf derselben Ebene angeben, hier verwenden wir mehr als eine Protokolldatei im http-Kontext.

/etc/nginx/nginx.,conf

Im Folgenden finden Sie weitere Beispiele für erweiterte Protokollierungskonfigurationen, die für Protokollformate nützlich sind, die komprimierungsbezogene Variablen enthalten, und zum Erstellen komprimierter Protokolldateien:

access_log /var/log/nginx/custom_log custom buffer 32k;access_log /path/to/log.gz compression gzip flush=5m;

Konfigurieren von Fehlerprotokollen in Nginx

Falls Nginx Probleme hat, werden Informationen darüber im Fehlerprotokoll aufgezeichnet. Diese Probleme fallen unter verschiedene Schweregrade: Debug, info, notice, warn, error (dies ist die Standardstufe und funktioniert global), crit, alert oder emerg.

Die Standardprotokolldatei ist log / error.,log, aber es befindet sich normalerweise in /var/log/nginx/ auf Linux-Distributionen. Die error_log-Direktive wird verwendet, um die Protokolldatei anzugeben, und sie kann im Haupt -, http -, Mail -, Stream -, Server-und Standortkontext (in dieser Reihenfolge) verwendet werden.

Sie sollten auch beachten, dass:

  • Konfigurationen im Hauptkontext immer von niedrigeren Ebenen in der obigen Reihenfolge geerbt werden.
  • und Konfigurationen in den unteren Ebenen überschreiben die von den höheren Ebenen geerbten Konfigurationen.,

Sie können die Fehlerprotokollierung mit der folgenden Syntax konfigurieren:

error_log /path/to/log_file log_level;

Zum Beispiel:

error_log /var/log/nginx/error_log warn; 

Dadurch wird Nginx angewiesen, alle Nachrichten vom Typ warn und schwerwiegendere Crit -, Alert-und Emerg-Meldungen auf Protokollebene zu protokollieren.

Im nächsten Beispiel werden Meldungen der Ebenen crit, alert und emerg protokolliert.

error_log /var/www/example1.com/log/error_log crit;

Betrachten Sie die folgende Konfiguration, hier haben wir die Fehlerprotokollierung auf verschiedenen Ebenen (im http-und Serverkontext) definiert., Im Falle eines Fehlers wird die Nachricht nur in ein Fehlerprotokoll geschrieben, das der Ebene am nächsten ist, auf der der Fehler aufgetreten ist.

/etc/nginx/nginx.conf

Wenn Sie mehrere error_log-Direktiven wie in der Konfiguration unten (gleiche Ebene) verwenden, werden die Nachrichten in alle angegebenen Protokolle geschrieben.

/etc/nginx/nginx.conf

Konfigurieren der bedingten Protokollierung in Nginx

In einigen Fällen soll Nginx möglicherweise eine bedingte Protokollierung von Nachrichten durchführen., Nicht jede Nachricht muss von Nginx protokolliert werden, daher können wir unbedeutende oder weniger wichtige Protokolleinträge aus unseren Zugriffsprotokollen für bestimmte Instanzen ignorieren.

Wir können das Modul ngx_http_map_module verwenden, das Variablen erstellt, deren Werte von Werten anderer Variablen abhängen. Die Parameter innerhalb eines Map-Blocks (der nur im http-Inhalt vorhanden sein sollte) geben eine Zuordnung zwischen Quell-und resultierenden Werten an.

Für diese Art von Einstellung wird eine Anforderung nicht protokolliert, wenn die Bedingung als "0” oder als leere Zeichenfolge ausgewertet wird., Dieses Beispiel schließt Anfragen mit den HTTP-Statuscodes 2xx und 3xx aus.

/ etc/nginx / nginx.conf
http{map $status $condition {~^ 0; default 1;}server{access_log /path/to/access.log custom if=$condition;}}

Hier ist ein weiteres nützliches Beispiel für das Debuggen einer Webanwendung in einer Entwicklungsphase. Dadurch werden alle Nachrichten ignoriert und nur Debug-Informationen protokolliert.

/etc/nginx/nginx.conf

Weitere Informationen, einschließlich der Anmeldung bei syslog, finden Sie hier.

Das ist alles für jetzt! In diesem Handbuch wurde erläutert, wie Sie das benutzerdefinierte Protokollierungsformat für Zugriffs-und Fehlerprotokolle in Nginx konfigurieren., Verwenden Sie das Feedback-Formular unten, um Fragen zu stellen oder Ihre Gedanken zu diesem Artikel zu teilen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.