使用dropwizard时,将自定义标头附加到访问日志

问题描述

我正在使用dropwizard 1.3.X,并尝试将在servlet过滤器中生成的唯一关联ID附加到访问日志中。

我尝试了几种方法,但是我的访问日志仍然像这样

127.0.0.1 - - [20/Aug/2020:18:15:56 +0000] "GET /v1/ HTTP/1.1" 404 43 "-" "RxNetty Client" 12

我是否可以以某种方式覆盖dropwizard的认日志记录并从标头附加自定义属性

我查看了Here提供的解决方案,但是它似乎已经过时了,RequestLogFactory现在是一个接口。我不确定实施是否正确。

我的Yaml配置文件如下:

server:
  type: 
  applicationcontextpath: /
  admincontextpath: /
  connector:
    type: 
    port: 
logging:
    level: INFO
    appenders:
    - type: console
      threshold: ALL
      target: stdout
      logFormat: "%d{dd/MMM/yyyy:HH:mm:ss} [%thread] %X{Correlation-ID} %-5level %logger{36} - %msg%n"

解决方法

我们在此处以类似的要求覆盖了请求日志(我们还从日志中过滤掉了某些请求,并且代码在kotlin中而不是Java,fwiw中):https://github.com/trib3/leakycauldron/blob/main/server/src/main/kotlin/com/trib3/server/config/dropwizard/FilteredLogbackAccessRequestLogFactory.kt

然后我们通过指定在dropwizard配置中将其激活

server:
  requestLog:
     type: filtered-logback-access