2017-01-18 17 views
1

ログメッセージのコードを同じログレベルで2つの異なるフォルダに作成しています。私が直面している問題はログメッセージを印刷できません条件付きで(elseになったとき)。主にelse部分が動作しません。logbackの条件 - 2つの異なるフォルダにログメッセージを出力する

2つの異なるアペンダーを使用してIf else条件に基づいて2つの異なるフォルダにログを書き込む方法を簡単に説明します。

コードは次のとおりです。

<if condition='property("type").contains("DEV")'> 
    <then> 
     <appender-ref ref="FILE-ENGINE" /> 
    </then> 
    <else> 
     <appnder-ref ref = "FILE-UI" /> 
    </else> 
</if> 

全体の設定ファイルである:

<property name="USER_HOME" value="D:/Log1/" /> 

<property name="USER_HOME2" value="D:/log2/" /> 


<if condition='property("type").contains("DEV")'> 
    <then> 
     <appender-ref ref="FILE-ENGINE" /> 
    </then> 
    <else> 
     <appnder-ref ref = "FILE-UI" /> 
    </else> 
</if> 


<appender name="FILE-ENGINE" class="ch.qos.logback.core.FileAppender"> 
    <file>${USER_HOME}/${log.name}.log</file> 
    <append>true</append> 
    <encoder> 
     <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{35} - 
      %msg%n</pattern> 
    </encoder> 
</appender> 

<appender name="FILE-UI" class="ch.qos.logback.core.FileAppender"> 
    <file>${USER_HOME2}/DEBUG.log</file> 
    <append>true</append> 
    <encoder> 
     <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{35} - 
      %msg%n</pattern> 
    </encoder> 
</appender> 


<appender name="FILE-ENGINE-ERROR" class="ch.qos.logback.core.FileAppender"> 
    <file>${USER_HOME}/${log.name}.error</file> 
    <append>true</append> 
    <encoder> 
     <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - 
      %msg%n</pattern> 
    </encoder> 
</appender> 


<logger name="com.code" level="debug" additivity="false"> 
    <appender-ref ref="FILE-ENGINE" /> 
    <appender-ref ref="FILE-UI" /> 

</logger> 

<root level="Error"> 
    <appender-ref ref="FILE-ENGINE-ERROR" /> 
</root> 

PLSは、他の条件でログを書く方法私を助けます。前もって感謝します。

答えて

2

あなたの設定は間違っています。作成したアペンダーを参照しています。 Atollログバックがサポートされている場合、異なるパッケージに設定したログレベルごとにappenderの参照を追加する必要があるため、メンテナンスが面倒な作業になります。

以下は、異なるファイルに書き込むことができる2つの方法です。ちょうどあなたが直接かの条件にアペンダを作成することができ、ファイルに

<appender name="fileAppender1" class="ch.qos.logback.core.FileAppender"> 
    <if condition='property("type").contains("DEV")'> 
     <then> 
      <file>${USER_HOME}/${log.name}.log</file> 
     </then> 
     <else> 
      <file>${USER_HOME2}/${log.name}.log</file> 
     </else> 
    </if> 
    <append>true</append> 
    <encoder> 
     <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{35} - 
     %msg%n</pattern> 
    </encoder> 
</appender> 
  • を変更することにより

    1. 。ただし、アペンダーを最初に作成する必要があります。

      <if condition='property("type").contains("DEV")'> 
      <then> 
          <appender name="fileAppender1" class="ch.qos.logback.core.FileAppender"> 
          <file>${USER_HOME}/${log.name}.log</file> 
          <append>true</append> 
          <encoder> 
           <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{35} - 
            %msg%n</pattern> 
           </encoder> 
          </appender> 
      </then> 
      <else> 
          <appender name="fileAppender1" class="ch.qos.logback.core.FileAppender"> 
          <file>${USER_HOME2}/${log.name}.log</file> 
          <append>true</append> 
          <encoder> 
           <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{35} - 
            %msg%n</pattern> 
           </encoder> 
          </appender> 
      </else> 
      </if> 
      
      <root level="DEBUG"> 
          <appender-ref ref="fileAppender1" /> 
      </root> 
      

    し、他の条件はあなたを動作させる場合のために、あなたが依存関係を追加することができますMavenを使用している場合は、あなたのクラスパスにjanino.jarを持っている必要があります。

     <dependency> 
          <groupId>org.codehaus.janino</groupId> 
          <artifactId>janino</artifactId> 
          <version>3.0.6</version> 
         </dependency> 
    
  • +0

    こんにちはKarthikさんに感謝します。他のappenderクラスを使用している場合、ch.qos.logback.core.rolling.RollingFileAppenderは動作していない、つまりログを書き込んでいません。あなたは私にこのことを教えてくれますか? –

    +0

    こんにちはKarthik、ありがとうございます。私は別のアペンダーを追加することもできます。もう一度ありがとう。 –

    関連する問題