CXF 日志记录拦截器日志未附加

时间:2021-07-14 04:26:18

标签: java web-services logging cxf

我正在开发一个客户端项目来使用来自 abc.wsdl 的一些网络服务。所有相关的类都是使用 cxf 和 wsdltojava 插件生成的。类生成也被打包到 jar 中,我在我的客户端项目中将其用作依赖项。所以服务调用存在一些问题,我需要记录入站请求和响应。所以我尝试使用 CXF 拦截器启用日志记录。问题是日志没有附加到日志文件中。有人可以帮忙吗?

配置:

 @Bean
public LoggingInInterceptor loggingInInterceptor() {
    log.info("LoggingInInterceptor Testing");
    LoggingInInterceptor loggingInInterceptor = new LoggingInInterceptor();
    loggingInInterceptor.setPrettyLogging(true);
    return loggingInInterceptor;
}

@Bean
public LoggingOutInterceptor loggingOutInterceptor() {
    log.info("LoggingOutInterceptor Testing");
    LoggingOutInterceptor loggingOutInterceptor = new LoggingOutInterceptor();
    loggingOutInterceptor.setPrettyLogging(true);
    return loggingOutInterceptor;
}

客户端类:

 @PostConstruct
public void init () {
    Bus bus = BusFactory.getDefaultBus();
    bus.getInInterceptors().add(loggingInInterceptor);
    bus.getInInterceptors().add(loggingOutInterceptor);
}

META-INF/org.apache.cxf.Logger :

org.apache.cxf.common.logging.Slf4jLogger

logback.xml:

<appender name="myLogger" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <prudent>true</prudent>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <fileNamePattern>${home.log.dir}/myLogger.log.%d</fileNamePattern>
        <maxHistory>90</maxHistory>
        <totalSizeCap>20GB</totalSizeCap>
    </rollingPolicy>
    <encoder>
        <pattern>%d %-5level %logger{35} [%X{X-UID} %X{X-SID} %X{X-CID} %X{X-TID}] - %msg %n</pattern>
    </encoder>
</appender>
<appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">
    <appender-ref ref="myLogger" />
    <neverBlock>true</neverBlock>
</appender>
<logger name="org.apache.cxf.services" level="INFO">
    <appender-ref ref="ASYNC" />
</logger>
<root>
    <level value="WARN" />
    <appender-ref ref="ASYNC" />
    <appender-ref ref="consoleLogger" />
</root>

感谢任何帮助。提前致谢。

0 个答案:

没有答案