nginx – Truncar um campo no log de acesso

nginx – Truncar um campo no log de acesso

Existe uma maneira de truncar o conteúdo de um campo armazenado no log de acesso?

Estou interessado em manter apenas os primeiros dez caracteres do User-Agent.

Responder1

Primeiro, você introduz uma variável personalizada que contém o agente do usuário truncado. Para isso você usa a mapdiretiva na variável regular do agente do usuário, $http_user_agent. A documentação do módulo de mapa está aqui:http://nginx.org/en/docs/http/ngx_http_map_module.html. Então você configura o formato de log usando a log_formatdiretiva, veja a documentação emhttps://docs.nginx.com/nginx/admin-guide/monitoring/logging/. Finalmente, você diz para access_logusar seu formato de log personalizado.

Resumindo:

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

informação relacionada