删除向导请求响应日志记录

2024-05-21

我想将 dropwizard 中的每个请求和响应记录到不同的文件中。例如我希望所有请求都被登录/var/log/applicationname-request.log以及所有回复/var/log/applicationname-response.log

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


不幸的是,DropWizard 目前本身不支持此功能。看这场热烈的讨论 https://github.com/dropwizard/dropwizard/pull/567了解更多信息。

幸运的是,如果您愿意放弃使用 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");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

删除向导请求响应日志记录 的相关文章

随机推荐