微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

以JSON格式在Spring Boot编码中访问logstash-logback中的请求头键

如何解决以JSON格式在Spring Boot编码中访问logstash-logback中的请求头键

我的用例是我需要在 spring boot 应用程序中打印 tomcat 服务器的访问日志。 日志应该是带有自定义字段名称的 JSON 格式。 像这样:

{
  "_type": "access","_timestamp": "2020-12-14 09:04:51.124","_url":"/api/v2/activities/search","_method": "GET","_response_code": 200,"_processing_time_in_ms":0.004,"referer":"https://google.com","user_agent":"XYZ","_level": "info
}

现在我在附加到控制台的 logback.xml 中使用 net.logstash.logback.encoder.AccessEventCompositeJsonEncoder 编码器。

我已经成功获得了其他字段的值,例如 _response_code : "%statsCode 通过这样做。

但是,如何在我的自定义 json 对象中直接从 request_headers 对象访问引用?

解决方法

logstash-logback-encoder's pattern providerlogback's conversion word for request headers%i%header)一起使用。

logstash-logback-encoder 的 README.md(上面链接)中给出的示例显示了如何做到这一点。复制到这里供参考...

<encoder class="net.logstash.logback.encoder.AccessEventCompositeJsonEncoder">
  <providers>
    <pattern>
      <pattern>
        {
        "custom_constant": "123","tags": ["one","two"],"remote_ip": "%a","status_code": "%s","elapsed_time": "%D","user_agent": "%i{User-Agent}","accept": "%i{Accept}","referer": "%i{Referer}","session": "%requestCookie{JSESSIONID}",...
        }
      </pattern>
    </pattern>
  </providers>
</encoder>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。