nginx - Ein Feld im Zugriffsprotokoll abschneiden

nginx - Ein Feld im Zugriffsprotokoll abschneiden

Gibt es eine Möglichkeit, den Inhalt eines Felds zu kürzen, das im Zugriffsprotokoll gespeichert ist?

Ich möchte nur die ersten zehn Zeichen des User-Agents behalten.

Antwort1

Zuerst führen Sie eine benutzerdefinierte Variable ein, die den gekürzten Benutzeragenten enthält. Dazu verwenden Sie die mapDirektive für die reguläre Benutzeragentenvariable $http_user_agent. Die Dokumentation für das Kartenmodul finden Sie hier:http://nginx.org/en/docs/http/ngx_http_map_module.html. Anschließend konfigurieren Sie das Protokollformat mit der log_formatDirektive. Weitere Informationen finden Sie in der Dokumentation unterhttps://docs.nginx.com/nginx/admin-guide/monitoring/logging/. Zum Schluss weisen Sie an, access_logIhr benutzerdefiniertes Protokollierungsformat zu verwenden.

In Summe:

# ...
http {
    map $http_user_agent $trunc_agent {
        default "";
        "~*(?P<tr>.{0,10}).*" $tr;
    }
    log_format myformat '[other fields] "$trunc_agent"';
    access_log [logfile] myformat;
}
# ...

verwandte Informationen