2017-03-27 29 views
0

log4j2構成内でログレベルをintに変換しようとしています。log4j2のログレベルを文字列からintに変更してください

Following the directions located in log4j2 Patterns section

image snippet of example log4j2 pattern mapping

私はlog4j2.xmlの設定で作成された上記の例を次に示します。

<JMS name="jmsQueue" 
destinationBindingName="${sys:env}.logging" 
factoryName="org.apache.activemq.jndi.ActiveMQInitialContextFactory" 
factoryBindingName="ConnectionFactory" 
providerURL="${sys:log4j.providerurl}" 
userName="log" 
password="log"> 
    <PatternLayout pattern='{"Message":"%m","LogLevel":%level{Debug=1,Info=2,Warn=3,Error=4,Fatal=5,Trace=6},"Type":"middleware","App":"${app_name}","Env":"${sys:env}","data":{"Event_Time":"%d{ISO8601}","Thread":"%t","Class":"%c"}}'/> 
</JMS> 

私は今、文字列のデバッグを交換情報などを警告するだろうと期待しております、編集PatternLayoutは。1,2,3のマップされたint値で。 。

これはそうではありませんが、私はまだ文字列値を受け取ります。誰かが私が間違いを犯していると示唆することができたら、私はそれを感謝します。ありがとうございました。

編集:

<?xml version="1.0" encoding="utf-8"?> 
<Configuration> 
    <!-- replace > app_name_here_only < with the distinct name of your service. you will use this name to search for within kibana (ex: type:middleware app:<app_name>) --> 
    <Properties> 
     <Property name="app_name">middleware_united</Property> 
    </Properties> 
    <!-- do not configure below this line --> 
    <Appenders> 
     <RollingFile name="file" fileName="${sys:mule.home}${sys:file.separator}logs${sys:file.separator}${app_name}.log" filePattern="${sys:mule.home}${sys:file.separator}logs${sys:file.separator}${app_name}-%i.log"> 
      <PatternLayout pattern="%d [%t] %-5p %c - %m%n"/> 
      <SizeBasedTriggeringPolicy size="10 MB"/> 
      <DefaultRolloverStrategy max="10"/> 
     </RollingFile> 
     <JMS name="jmsQueue" destinationBindingName="${sys:env}.logging" factoryName="org.apache.activemq.jndi.ActiveMQInitialContextFactory" factoryBindingName="ConnectionFactory" providerURL="${sys:log4j.providerurl}" userName="log" password="log"> 
    <PatternLayout pattern='{"Type":"middleware","Env":"${sys:env}","App":"${app_name}","LogLevel":%level{Debug=1,Info=2,Warn=3,Error=4,Fatal=5,Trace=6},"Message":"%m","data":{"Event_Time":"%d{ISO8601}","Thread":"%t","Class":"%c"}}'/> 
     </JMS> 
    </Appenders> 
    <Loggers> 
     <!-- CXF is used heavily by Mule for web services --> 
     <AsyncLogger name="org.apache.cxf" level="WARN"/> 
     <!-- Apache Commons tend to make a lot of noise which can clutter the log--> 
     <AsyncLogger name="org.apache" level="WARN"/> 
     <!-- Reduce startup noise --> 
     <AsyncLogger name="org.springframework.beans.factory" level="WARN"/> 
     <!-- Mule classes --> 
     <AsyncLogger name="org.mule" level="INFO"/> 
     <AsyncLogger name="com.mulesoft" level="INFO"/> 
     <!-- Reduce DM verbosity --> 
     <AsyncLogger name="org.jetel" level="WARN"/> 
     <AsyncLogger name="Tracking" level="WARN"/> 
     <AsyncRoot level="INFO"> 
      <AppenderRef ref="file"/> 
      <AppenderRef ref="jmsQueue"/> 
     </AsyncRoot> 
    </Loggers> 
</Configuration> 
+0

は、構成ファイル内の他のアペンダやパターンはありますか? – wangyuntao

+0

@wangyuntaoはい私は独自のパターンファイルを持つローリングファイルアペンダーを持っています。私は問題の完全な構成を追加しました。ありがとうございました。 – Paul

+0

@wangyuntao - 私は今それが期待通りに働いているのを見ています。私の側にはid10tが登場しました。 結果: { "タイプ": "ミドルウェア"、 "Envの": "DEV"、 "アプリケーション": "ロギング試験"、 "ログレベル":2、 "メッセージ":。。。」 私はあなたの時間を感謝します、ありがとう。 – Paul

答えて

0

私はあなたのパターンをテストしてみたが、それはうまく働きました。

ここに私のlog4j2.xmlは

<?xml version="1.0" encoding="UTF-8"?> 
<Configuration> 
    <Appenders> 
     <Console name="STDOUT" target="SYSTEM_OUT"> 
      <PatternLayout 
        pattern='{"Type":"middleware","Env":"${sys:env}","App":"${app_name}","LogLevel":%level{Debug=1,Info=2,Warn=3,Error=4,Fatal=5,Trace=6},"Message":"%m","data":{"Event_Time":"%d{ISO8601}","Thread":"%t","Class":"%c"}}'/> 
     </Console> 
    </Appenders> 

    <Loggers> 
     <Root level="DEBUG"> 
      <AppenderRef ref="STDOUT"/> 
     </Root> 
    </Loggers> 
</Configuration> 

だし、ここでの出力です:

{"Type":"middleware","Env":"${sys:env}","App":"${app_name}","LogLevel":2,"Message":"b","data":{"Event_Time":"2017-03-29T11:28:14,477","Thread":"main","Class":"test.Log4j2"}} 
関連する問題