【发布时间】:2014-12-08 11:24:44
【问题描述】:
我想将 dropwizard 中的每个请求和响应记录到不同的文件中。例如,我希望将所有请求记录在 /var/log/applicationname-request.log 并将所有响应记录在 /var/log/applicationname-response.log
有什么方法可以达到同样的效果吗?
【问题讨论】:
标签: java jakarta-ee jersey dropwizard jersey-client
我想将 dropwizard 中的每个请求和响应记录到不同的文件中。例如,我希望将所有请求记录在 /var/log/applicationname-request.log 并将所有响应记录在 /var/log/applicationname-response.log
有什么方法可以达到同样的效果吗?
【问题讨论】:
标签: java jakarta-ee jersey dropwizard jersey-client
不幸的是,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");
【讨论】: