【问题标题】:Drop-wizard request response logging下拉向导请求响应日志记录
【发布时间】:2014-12-08 11:24:44
【问题描述】:

我想将 dropwizard 中的每个请求和响应记录到不同的文件中。例如,我希望将所有请求记录在 /var/log/applicationname-request.log 并将所有响应记录在 /var/log/applicationname-response.log

有什么方法可以达到同样的效果吗?

【问题讨论】:

    标签: java jakarta-ee jersey dropwizard jersey-client


    【解决方案1】:

    不幸的是,DropWizard 目前不支持本机。请参阅this lively discussion 了解更多信息。

    幸运的是,如果您愿意放弃使用 DropWizard 配置日志记录,那么有一个解决方法。在您的 run 方法中的某处调用以下代码来重置日志记录并使用 sfl4j 的标准机制重新配置它:

    LoggerContext context = (LoggerContext)LoggerFactory.getILoggerFactory();
    context.reset();
    ContextInitializer initializer = new ContextInitializer(context);
    initializer.autoConfig();
    

    然后您可以通过将logback.xml 添加到您的类路径并进行如下配置来配置日志记录:

    <configuration>
      <appender name="REQUEST" class="ch.qos.logback.core.FileAppender">
        <file>/var/log/applicationname-request.log</file>
        <append>false</append>
        <encoder>
          <pattern>%-5relative %-5level %logger{35} - %msg%n</pattern>
        </encoder>
      </appender>
    
      <appender name="RESPONSE" class="ch.qos.logback.core.FileAppender">
        <file>/var/log/applicationame-response.log</file>
        <append>false</append>
        <encoder>
          <pattern>%-5relative %-5level %logger{35} - %msg%n</pattern>
        </encoder>
      </appender>
    
      <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
          <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
      </appender>
    
      <logger name="org.example.request">
        <level value="DEBUG" />
        <appender-ref ref="REQUEST" />
      </logger>
    
      <logger name="org.example.response">
        <level value="DEBUG" />
        <appender-ref ref="RESPONSE" />
      </logger>
    
      <root level="warn">
        <appender-ref ref="STDOUT" />
      </root>
    </configuration>
    

    然后你可以在你的资源中获取那些相应的记录器并注销:

    static final Logger REQUEST_LOG = LoggerFactory.getLogger("org.example.request");
    static final Logger RESPONSE_LOG = LoggerFactory.getLogger("org.example.response");
    

    【讨论】:

    • 谢谢,这样可以正常工作。我们可以在下拉向导配置中绑定这个记录器吗?因此,该下拉向导可以将其用于其内部日志记录。
    • 我不认为您将能够在 DropWizard 配置中设置此记录器,因为当您重新初始化记录时,它会丢失。但是你可以在 logback.xml 中为 DropWizard 类添加一个单独的记录器
    • @condit 我认为这已经过时了...是吗?
    猜你喜欢
    • 1970-01-01
    • 2017-08-07
    • 2018-12-20
    • 2022-01-08
    • 1970-01-01
    • 1970-01-01
    • 2013-04-04
    • 2020-07-10
    • 2014-11-17
    相关资源
    最近更新 更多