
¿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 map
directiva 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_format
directiva, consulte la documentación enhttps://docs.nginx.com/nginx/admin-guide/monitoring/logging/. Finalmente, le indica que access_log
utilice 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;
}
# ...