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;
}
# ...

Связанный контент