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?
想分享对我很有效的最终解决方案。
在应用程序的 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 日志也每天轮换。
根据您使用的日志记录框架,您应该正确配置log4j
,slf4j
或<tomcat>/conf/logging.properties
文件以为类设置特定的附加程序org.apache.cxf.interceptor.LoggingInInterceptor
。
根据Javadoc,您可以在 LoggingInInterceptor 构造函数中声明一个新的 PrintWriter :
File file = new File("/directory/mylogs.txt");
file.getParentFile().mkdirs();
PrintWriter printWriter = new PrintWriter(file);
LoggingInInterceptor loggingInInterceptor = new LoggingInInterceptor(printWriter);
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
只是想我会发帖以防将来对任何人有帮助。