2016-09-06 16 views
0

メッセージレベルごとにレイアウトが異なる1つのアペンダーが必要です。私が思いついたすべてのソリューションは、ここのように2つの異なるアペンダーが必要です:log4j2 - 1人のアペンダーの異なるレベルのレイアウト

<Appender type="Console" name="STDOUT_D"> 
    <Layout type="PatternLayout" pattern="[%-5p] %d %c - %m%n"/> 
    <Filters> 
     <ThresholdFilter level="fatal" onMatch="ACCEPT" onMismatch="NEUTRAL"/> 
     <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="NEUTRAL"/> 
     <ThresholdFilter level="warn" onMatch="DENY" onMismatch="NEUTRAL"/> 
     <ThresholdFilter level="info" onMatch="DENY" onMismatch="NEUTRAL"/> 
     <ThresholdFilter level="debug" onMatch="ACCEPT" onMismatch="NEUTRAL"/> 
    </Filters> 
</Appender> 
<Appender type="Console" name="STDOUT"> 
    <Layout type="PatternLayout" pattern="[%-5p] %d %-60.60c - %m%n"/> 
    <Filters> 
     <ThresholdFilter level="fatal" onMatch="DENY" onMismatch="NEUTRAL"/> 
     <ThresholdFilter level="error" onMatch="DENY" onMismatch="NEUTRAL"/> 
     <ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="NEUTRAL"/> 
     <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="NEUTRAL"/> 
     <ThresholdFilter level="debug" onMatch="DENY" onMismatch="NEUTRAL"/> 
    </Filters> 
</Appender> 

アイデア?

私はstrictモードでXML設定を使用しています。

答えて

0

私は

<Appender type="Console" name="STDOUT"> 
    <PatternLayout> 
    <ScriptPatternSelector defaultPattern="[%-5level] %c{1.} %C{1.}.%M.%L %msg%n"> 
     <Script name="selector" language="groovy"><![CDATA[ 
      if (logEvent.getLevel() == org.apache.logging.log4j.Level.DEBUG) 
       return "DEBUG" 
      else 
       return "INFO" 
      ]]> 
     </Script> 
     <PatternMatch key="DEBUG" pattern="[%-5p] %d %c - %m%n"/> 
     <PatternMatch key="INFO" pattern="[%-5p] %d %-60.60c - %m%n"/> 
    </ScriptPatternSelector> 
    </PatternLayout> 
</Appender> 
ScriptPatternSelector

を使用して、この結果をarchievedました
関連する問題