nginx 로그 중 $requestbody 16 진수 문자 (\ x22 \ x9B \ x5C \ \ x09 \ x08...) 완벽 한 해결 방안

2276 단어
nginx 기록 접근 로 그 를 사용 할 때 request_body PUT, POST 요청 이 있 을 때 로그 에 \x22 \x9B \x5C \x09 \x08 문자 가 들 어 있어 읽 기와 처리 에 불리 합 니 다.
구체 적 인 지원 request_body 의 http method 는 http 1.1 정의 9 Method Definitions 와 Payloads of HTTP Request Methods 를 참조 합 니 다.nginx.conf 기본 access로그 설정
    log_format  main '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"'
                      '$http_host $upstream_status $upstream_addr $request_time $upstream_response_time';

... 로 바꾸다
    log_format json_log escape=json '{"realip":"$remote_addr","@timestamp":"$time_iso8601","host":"$http_host","request":"$request","req_body":"$request_body","status":"$status","size":$body_bytes_sent,"ua":"$http_user_agent","cookie":"$http_cookie","req_time":"$request_time","uri":"$uri","referer":"$http_referer","xff":"$http_x_forwarded_for","ups_status":"$upstream_status","ups_addr":"$upstream_addr","ups_time":"$upstream_response_time"}';

참고 nginx 에서 JSON 로 그 를 생 성 하 는 방법 은 무엇 입 니까?
공식 문서 ngxhttp_log_module.html#log_format 주의, escape 는 1.11.8 이후 추 가 된 인자 입 니 다.
오래된 버 전이 라면 Liux 는 shell 명령 으로 교체 하 는 것 을 고려 할 수 있 습 니 다. logstash 사용 ruby 처 리 를 고려 할 수 있 습 니 다. optionally support handling of \ x escape codes 를 참고 하 십시오.
블 로그 anjia. ml / 2017 / 06 / 21 /... 약서 www. jianshu. com / p / 8409 f28f 3... 김 juejin. im / post / 5949 e0...

좋은 웹페이지 즐겨찾기