在运行org.apache.cxf.enterceptor.LoggingInInterceptor的应用程序中,当前正在将HTTP请求/响应记录到catalina.out.中
我希望它以某种方式将这些信息复制到一个单独的日志文件中。有关于如何做到这一点的建议吗?
想分享对我来说效果很好的最终解决方案。
在应用程序的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
类设置特定的appender。
根据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
我只是想发个帖子,以防将来对任何人都有帮助。