nginx - 액세스 로그에서 필드 자르기

nginx - 액세스 로그에서 필드 자르기

액세스 로그에 저장된 필드 내용을 자르는 방법이 있습니까?

User-Agent의 처음 10자만 유지하고 싶습니다.

답변1

먼저 잘린 사용자 에이전트가 포함된 사용자 지정 변수를 도입합니다. 이를 위해 map일반 사용자 에이전트 변수에 대한 지시어를 사용합니다 $http_user_agent. 지도 모듈에 대한 문서는 여기에 있습니다: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;
}
# ...

관련 정보