2011-11-16 31 views
5

私はそう私はあなたが戻ってあなたがLogbackプロジェクトサイトにthe log4j.properties to logback.xml translatorを使用することができるのlog4jプロパティ形式に手でそれを翻訳することができた場合はlog4j.xmlをlogback.xmlに変換するにはどうすればよいですか?

+0

あなたの質問を書き直してください:ソフトウェアの推奨事項はここではオフトピックです。 – user2284570

答えて

0

をlogback.xmlために私のlog4j.xmlを変換する必要がlogbackするのlog4jからシフトしています。

+1

私はこれを知っています..とにかく感謝します。 –

2

同じ問題が発生し、より良い解決策が見つかりました。まず、最新のlog4j.xmlから開始する必要があります。私のところにはまだcategorypriorityというタグがありましたが、設定ではそれぞれloggerlevelに置き換える必要があります。その後、例えばRollingFileAppenderのような特定のアペンダーをすべて削除します。その後、手でそれらを変換する必要があります。

this blogの指示に従って、XalanとXSLT変換フィルターを使用してlog4j.xmlファイルをlogback.xmlファイルに変換します。このブログの内容は私の答えにとってはかなり貴重なものなので、私はこの記事がちょうどの場合にfound in the wayback machineになることを確かにしました。また、この記事では、必要なライブラリのバージョンが提供されていません。ここで私が使用したものです:

  • シリアライザ-2.7.1
  • のXalan-2.7.0
  • xercesImpl-2.6.2
  • XML-APIを-1.3.02

そして、私のために働いていたコマンドラインがあります(すべてのライブラリとリソースがある同じフォルダで実行されます):

java -classpath xalan-2.7.0.jar org.apache.xalan.xslt.Process -IN log4j.xml -XSL log4j-to-logback.xsl -OUT logback.xml 

現在、ほとんどの作業はすでに完了しています。まず、すべてのロガーを元のlog4j.xmlファイルのように再編成して、さらに簡単に比較できるようにしました。それで私は特別なアペンダーを手で変換しました。見た目よりも簡単ですが、documentationは明らかです。ここでの例では、(私は実際に対処しなければならなかった最も複雑な)です:

<!-- Log4J Configuration --> 
<appender name="myAppender" class="org.apache.log4j.RollingFileAppender"> 
    <param name="File" value="${catalina.base}/logs/myApp.log" /> 
    <param name="Append" value="true" /> 
    <param name="MaxFileSize" value="20MB" /> 
    <param name="MaxBackupIndex" value="10" /> 
    <layout class="org.apache.log4j.PatternLayout"> 
     <param name="ConversionPattern" value="%d %X{param} %-5p %m%n" /> 
    </layout> 
     <filter class="org.apache.log4j.varia.StringMatchFilter"> 
       <param name="StringToMatch" value="PATTERN1" /> 
       <param name="AcceptOnMatch" value="true" /> 
     </filter> 
     <filter class="org.apache.log4j.varia.StringMatchFilter"> 
       <param name="StringToMatch" value="PATTERN2" /> 
       <param name="AcceptOnMatch" value="true" /> 
     </filter> 
    <filter class="org.apache.log4j.varia.DenyAllFilter"/> 
</appender> 


<!-- Logback configuration --> 
<appender name="myAppender" class="ch.qos.logback.core.rolling.RollingFileAppender"> 
    <file>${catalina.base}/logs/myApp.log</file> 
    <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> 
     <fileNamePattern>${catalina.base}/logs/myApp.log.%i</fileNamePattern> 
     <minIndex>1</minIndex> 
     <maxIndex>10</maxIndex> 
    </rollingPolicy> 
    <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> 
     <maxFileSize>20MB</maxFileSize> 
    </triggeringPolicy> 
    <filter class="ch.qos.logback.core.filter.EvaluatorFilter">  
     <evaluator> <!-- defaults to type ch.qos.logback.classic.boolex.JaninoEventEvaluator --> 
      <expression>return message.contains("PATTERN1");</expression> 
     </evaluator> 
     <OnMismatch>NEUTRAL</OnMismatch> 
     <OnMatch>ACCEPT</OnMatch> 
    </filter> 
    <filter class="ch.qos.logback.core.filter.EvaluatorFilter">  
     <evaluator> <!-- defaults to type ch.qos.logback.classic.boolex.JaninoEventEvaluator --> 
      <expression>return message.contains("PATTERN2");</expression> 
     </evaluator> 
     <OnMismatch>DENY</OnMismatch> 
     <OnMatch>ACCEPT</OnMatch> 
    </filter> 
    <encoder> 
     <pattern>%d %X{param} %-5p %m%n</pattern> 
    </encoder> 
</appender> 

NB:あなたの設定は私のような評価者のフィルタを使用する必要がある場合、あなたはjaninoとコモンズ・コンパイラを宣言する必要があります(同じバージョンas slf4j)

関連する問題