0

我的用例是我需要在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 对象访问引用者?

4

1 回答 1

0

使用logstash-logback-encoder 的模式提供程序以及logback 的请求标头%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>
于 2021-05-04T02:35:30.057 回答