如何使用 logback 从 STDOUT 关闭 Soap Message CXF

How to turn off Soap Message CXF form STDOUT using logback

我正在使用 Apache cxf 开发 Web 服务,但在我的控制台中 catalina.out 我有很多额外的日志,我正在使用 logback 进行日志记录。

我想关闭 org.apache.cxf.services 生成的日志记录 soap 消息,这是我的 logback 配置:

<!-- Standard Output logger -->
    <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>

<!-- File Appender -->
    <appender name="FILE"
        class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>/logs/output-log.log</file>
        <triggeringPolicy
            class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <maxFileSize>1MB</maxFileSize>
        </triggeringPolicy>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>/logs/output-log-%d{yyyy-MM-dd}.log</fileNamePattern>
        </rollingPolicy>

        <encoder>
            <pattern>%d{dd-MM-yyyy HH:mm:ss.SSS} %-5p [%-10.10t]
                %60.60c:%-3L%m%n
            </pattern>
        </encoder>
    </appender>

<logger name="org.apache.cxf" level="ERROR" additivity="false">
        <appender-ref ref="AUDITTRAIL" />
        <appender-ref ref="STDOUT" />
        <appender-ref ref="FILE" />
        <!-- appender-ref ref="SYSLOG" / -->
    </logger>

    <logger name="org.apache.cxf.interceptor" level="ERROR"
        additivity="false" />
    <logger name="org.apache.cxf.services" level="ERROR" additivity="false" />

    <root level="INFO">
        <appender-ref ref="AUDITTRAIL" />
        <appender-ref ref="STDOUT" />
        <appender-ref ref="FILE" />
        <!-- appender-ref ref="SYSLOG" / -->
    </root>

使用此配置,我仍然在控制台日志和输出日志文件示例中收到 soap 消息:

 mars 30, 2018 9:55:00 AM org.apache.cxf.services.WebServiceImplService.StartImplPort.WebService
INFOS: Inbound Message
----------------------------
ID: 5
Address: http://127.0.0.1:8089/glsid/ws/webService
Encoding: UTF-8
Http-Method: POST
Content-Type: text/xml; charset=utf-8
Headers: {Accept=[text/xml, text/html, image/gif, image/jpeg, 
.......

提前感谢解决此问题的任何帮助

这个解决方案终于对我有用了:

在文件中:META-INF/cxf/org.apache.cxf.Logger

我补充说:org.apache.cxf.common.logging.Slf4jLogger

在 spring 配置中:applicationContext:

我补充说:

 <bean id="loggingInInterceptor" class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
    <bean id="loggingOutInterceptor" class="org.apache.cxf.interceptor.LoggingOutInterceptor"/> 
    <cxf:bus>
     <cxf:inInterceptors>
            <ref bean="loggingInInterceptor"/>
        </cxf:inInterceptors>
        <cxf:outInterceptors>
            <ref bean="loggingOutInterceptor"/>
        </cxf:outInterceptors>  
    </cxf:bus>

并在 logback.xml 中关闭 STDOUT 中的肥皂记录:

<!-- Apache CXF logger -->
      <logger name="org.apache.cxf" level="INFO"/>
      <logger name="org.apache.cxf.interceptor" additivity="false">
        <!-- <appender-ref ref="STDOUT" /> -->
        <appender-ref ref="FILE" />
      </logger>

    <root level="INFO">
        <!-- <appender-ref ref="STDOUT" />-->
        <appender-ref ref="FILE" />
    </root>