代码之家  ›  专栏  ›  技术社区  ›  e2rabi

如何使用logback关闭Soap消息CXF表单STDOUT

  •  2
  • e2rabi  · 技术社区  · 6 年前

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

    我想关闭记录org生成的soap消息。阿帕奇。cxf。服务,这是我的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, 
    .......
    

    有任何帮助来解决此问题,请提前感谢

    1 回复  |  直到 6 年前
        1
  •  2
  •   e2rabi    6 年前

    最后,这个解决方案对我有效:

    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中关闭标准输出中的soap日志记录。xml:

    <!-- 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>