
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 map
Direktive 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_format
Direktive. Weitere Informationen finden Sie in der Dokumentation unterhttps://docs.nginx.com/nginx/admin-guide/monitoring/logging/. Zum Schluss weisen Sie an, access_log
Ihr 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;
}
# ...