nginx: truncar un campo en el registro de acceso

nginx: truncar un campo en el registro de acceso

¿Existe alguna forma de truncar el contenido de un campo almacenado en el registro de acceso?

Me interesa conservar solo los primeros diez caracteres de User-Agent.

Respuesta1

Primero, introduce una variable personalizada que contiene el agente de usuario truncado. Para eso, use la mapdirectiva en la variable del agente de usuario normal, $http_user_agent. La documentación para el módulo de mapas está aquí:http://nginx.org/en/docs/http/ngx_http_map_module.html. Luego configura el formato de registro usando la log_formatdirectiva, consulte la documentación enhttps://docs.nginx.com/nginx/admin-guide/monitoring/logging/. Finalmente, le indica que access_logutilice su formato de registro personalizado.

En resumen:

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

información relacionada