2012-02-24 4 views
5

すべてのメッセージを検索しましたが、その質問に対して明確な答えが見つかりませんでした。cxf別のログファイルへのインバウンドおよびアウトバウンドメッセージのログ

CXF着信メッセージと発信着信メッセージを記録するようにログを構成する方法を教えてください。

次の設定があります。

org.apache.cxf.common.logging.Log4jLogger 
  • applicationContext.xmlを持つ

    • ファイルorg.apache.cxf.Loggerは、以下の(それは愚かに聞こえるが、それは私がメッセージ出力を得ることができるインターセプタのための唯一の場所である)

      を持っています
      <bean id="abstractLoggingInterceptor" abstract="true"> 
      <property name="prettyLogging" value="true"/> 
      </bean> 
      <bean id="loggingInInterceptor" class="org.apache.cxf.interceptor.LoggingInInterceptor" 
      parent="abstractLoggingInterceptor"/> 
      <bean id="loggingOutInterceptor" class="org.apache.cxf.interceptor.LoggingOutInterceptor" 
      parent="abstractLoggingInterceptor"/> 
      
      <cxf:bus> 
      <cxf:inInterceptors> 
      <ref bean="loggingInInterceptor"/> 
      </cxf:inInterceptors> 
      <cxf:outInterceptors> 
      <ref bean="loggingOutInterceptor"/> 
      </cxf:outInterceptors> 
      <cxf:outFaultInterceptors> 
      <ref bean="loggingOutInterceptor"/> 
      </cxf:outFaultInterceptors> 
      <cxf:inFaultInterceptors> 
      <ref bean="loggingInInterceptor"/> 
      </cxf:inFaultInterceptors> 
      </cxf:bus> 
      

    私はSLF4Jととのlog4jで、次の手順に従っしようとしたが、出力のみIアプリケーションログメッセージがファイルに届きます。私は私のコンソール上でインバウンドとアウトバウンドのメッセージを見ることができます。

    私はlogback.xmlに似た何かを得ることができるので、アプリログとメッセージログを分けることができます。例:http://www.wolfe.id.au/2011/05/20/apache-cxf-logging/

    ありがとう。

    EDIT 1: 私は私のクラスパスからorg.apache.cxf.common.logging.Log4jLoggerを取り出し、そして私のlog4j.xmlに次を置きます。ロギングのレベルがINFOの場合、ファイルにロギングし、コンソールに出力します。

    <appender name="RSLOGFILE" class="org.apache.log4j.RollingFileAppender"> 
    <param name="file" value="${project.basedir}/logs/cxf_inout_messages.log"/> 
    <param name="MaxFileSize" value="100KB"/> 
    <!-- Keep one backup file --> 
    <param name="MaxBackupIndex" value="1"/> 
    <layout class="org.apache.log4j.PatternLayout"> 
    <!-- Print the date in ISO 8601 format --> 
    <param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n"/> 
    </layout> 
    </appender> 
    <logger name="org.apache.cxf"> 
    <level value="ERROR"/> 
    <appender-ref ref="RSLOGFILE"/> 
    </logger> 
    
  • 答えて

    9

    あなたはCXF 2.2.8以降を使用している、あなたは次のことを行う必要があるだろうと仮定:

    org.apache.cxf.common.logging.Slf4jLogger 
    

    ステップ1)を以下を含むクラスパス上のファイルMETA-INF/cxf/org.apache.cxf.Loggerを作成します。

    Mavenを使用している場合、この新しいファイルはsrc/main/resources/META-INF/cxfで、src/main/webapp未満でなければなりません!あなたはCXF LoggingFeatureを作成し、すべてのメッセージをログに記録する場合

    ステップ2)は、trueprettyLoggingプロパティを設定し、CXFバスに追加します。

    手順3) log4jとslf4j-log4j12に必要なjarファイルを追加します。

    <dependency> 
         <groupId>org.slf4j</groupId> 
         <artifactId>slf4j-log4j12</artifactId> 
         <version>${slf4j.version}</version> 
        </dependency> 
        <dependency> 
         <groupId>log4j</groupId> 
         <artifactId>log4j</artifactId> 
         <version>${log4j.version}</version> 
        </dependency> 
    

    ステップ4)あなたlog4j.xmlは、INFOにorg.apache.cxf.servicesのログレベルを設定しFALSEadditivityを設定し、専用のアペンダ添付して

    <!-- level INFO needed to log SOAP messages --> 
    <logger name="org.apache.cxf.services" additivity="false"> 
        <level value="INFO" /> 
        <!-- specify a dedicated appender for the SOAP messages --> 
        <appender-ref ref="WS_LOG_FILE" /> 
    </logger> 
    
    をあなたはMavenを使用している場合は、次の依存関係が含まれます

    私はblog post which explains how to configure CXF for log4j in more detailを作成しました。

    +2

    ここですべてのことはちょっと注意してください: 「src/main/webapp」ではなく「src/main/resources」の下に「META-INF/cxf/org.apache.cxf.Logger」を入れてください。私がしたように。そうすればクラスパスの下に置かれます。 –

    関連する問題