nginx - 截断访问日志中的字段

nginx - 截断访问日志中的字段

有没有办法截断存储在访问日志中的字段内容?

我只想保留 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;
}
# ...

相关内容