1

In the application that am working on org.apache.cxf.interceptor.LoggingInInterceptor is currently logging HTTP request/responses into catalina.out.

I want it to somehow duplicate this info into a separate log file. Any pointers of how to do this?

4

4 回答 4

5

想分享对我很有效的最终解决方案。

在应用程序的 log4j.properties 中添加了以下内容

log4j.logger.org.apache.cxf.interceptor.LoggingOutInterceptor=INFO, queryLog
log4j.additivity.org.apache.cxf.interceptor.LoggingOutInterceptor=true

log4j.logger.org.apache.cxf.interceptor.LoggingInInterceptor=INFO, queryLog
log4j.additivity.org.apache.cxf.interceptor.LoggingInInterceptor=true

# Query log
log4j.appender.queryLog=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.queryLog.File=/C:/Eclipse-Tomcat/logs/query.log
log4j.appender.queryLog.layout=org.apache.log4j.PatternLayout
log4j.appender.queryLog.layout.ConversionPattern=%d [%t] %-5p %c %x - %m%n
log4j.appender.queryLog.DatePattern = '.'yyyy-MM-dd
log4j.category.queryLogger=INFO, queryLog

这对我来说基本上很有效,输入/输出 HTTP 请求响应记录在 catalina.out 以及 query.log 日志也每天轮换。

于 2013-09-06T11:06:03.497 回答
2

根据您使用的日志记录框架,您应该正确配置log4j,slf4j<tomcat>/conf/logging.properties文件以为类设置特定的附加程序org.apache.cxf.interceptor.LoggingInInterceptor

于 2013-09-04T17:01:49.427 回答
1

根据Javadoc,您可以在 LoggingInInterceptor 构造函数中声明一个新的 PrintWriter :

File file = new File("/directory/mylogs.txt");
file.getParentFile().mkdirs();
PrintWriter printWriter = new PrintWriter(file);
LoggingInInterceptor loggingInInterceptor = new LoggingInInterceptor(printWriter);
于 2013-09-03T10:54:34.187 回答
0

OP 的答案提供的设置也对我有用(谢谢!)但是我必须将 LoggingOutInterceptor 类名称更改为正在运行服务的类。

因此,而不是以下内容:

log4j.logger.org.apache.cxf.interceptor.LoggingOutInterceptor=INFO, queryLog
log4j.additivity.org.apache.cxf.interceptor.LoggingOutInterceptor=true

我需要这个:

log4j.logger.org.apache.cxf.services=INFO, outgoingSOAPMessages
log4j.additivity.org.apache.cxf.services=true

只是想我会发帖以防将来对任何人有帮助。

于 2014-05-01T11:00:14.467 回答