
アクセス ログに保存されているフィールドの内容を切り捨てる方法はありますか?
User-Agent の最初の 10 文字のみを保持することに興味があります。
答え1
まず、切り捨てられたユーザー エージェントを含むカスタム変数を導入します。そのためには、map
通常のユーザー エージェント変数のディレクティブを使用します$http_user_agent
。マップ モジュールのドキュメントは、こちらにあります。http://nginx.org/en/docs/http/ngx_http_map_module.html次に、ディレクティブを使用してログ形式を設定します。log_format
詳細については、https://docs.nginx.com/nginx/admin-guide/monitoring/logging/最後に、access_log
カスタム ログ形式を使用するように に指示します。
要約すれば:
# ...
http {
map $http_user_agent $trunc_agent {
default "";
"~*(?P<tr>.{0,10}).*" $tr;
}
log_format myformat '[other fields] "$trunc_agent"';
access_log [logfile] myformat;
}
# ...