有没有办法截断存储在访问日志中的字段内容?
我只想保留 User-Agent 的前十个字符。
答案1
首先,您引入一个包含截断用户代理的自定义变量。为此,您可以map
在常规用户代理变量上使用指令$http_user_agent
。map 模块的文档位于此处: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;
}
# ...