2017-09-20 33 views
1

以下に示すように複数のロガーを定義しました(com.xyzとorg.xyz)。 Log4j2は最初のロガー定義を無視し、2番目のロガー定義のみをロードします。この例では、org.xyzはロードされていません。Log4j2:複数のロガーを定義する方法

{ 
    "configuration": { 
    "name": "Default", 
    "appenders": { 
     "Console": { 
     "name": "Console-Appender", 
     "target": "SYSTEM_OUT", 
     "PatternLayout": {"pattern": "[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n"} 
     } 
    }, 
    "loggers": { 
     "logger": { 
     "name": "org.xyz", 
     "level": "info", 
     "appender-ref": [{"ref": "Console-Appender","level": "info"}] 
     }, 
     "logger": { 
     "name": "com.xyz", 
     "level": "debug", 
     "appender-ref": [{"ref": "Console-Appender", "level": "debug"}] 
     }, 
     "root": { 
     "level": "warn", 
     "appender-ref": {"ref": "Console-Appender","level": "warn"} 
     } 
    } 
    } 
} 

下記のlog4j2デバッグメッセージを確認してください。

DEBUG StatusLogger Processing node for object loggers 
DEBUG StatusLogger Processing node for object logger 
DEBUG StatusLogger Node name is of type STRING 
DEBUG StatusLogger Node level is of type STRING 
DEBUG StatusLogger Node additivity is of type STRING 
DEBUG StatusLogger Processing node for array appender-ref 
DEBUG StatusLogger Processing appender-ref[0] 
DEBUG StatusLogger Returning logger with parent loggers of type logger:class  org.apache.logging.log4j.core.config.LoggerConfig 
DEBUG StatusLogger Processing node for object root 
DEBUG StatusLogger Node level is of type STRING 
DEBUG StatusLogger Processing node for object appender-ref 
DEBUG StatusLogger Node ref is of type STRING 
DEBUG StatusLogger Node level is of type STRING 
DEBUG StatusLogger Returning appender-ref with parent root of type appender-ref:class org.apache.logging.log4j.core.config.AppenderRef 
DEBUG StatusLogger Returning root with parent loggers of type root:class org.apache.logging.log4j.core.config.LoggerConfig$RootLogger 
DEBUG StatusLogger Returning loggers with parent root of type loggers:class org.apache.logging.log4j.core.config.LoggersPlugin 
DEBUG StatusLogger Completed parsing configuration 
DEBUG StatusLogger Building Plugin[name=logger, class=org.apache.logging.log4j.core.config.LoggerConfig]. 
DEBUG StatusLogger createLogger(additivity="false", level="DEBUG", name="com.xyz", includeLocation="null", ={Console-Appender}, ={}, Configuration(Default), Filter=null) 
DEBUG StatusLogger Building Plugin[name=appender-ref, class=org.apache.logging.log4j.core.config.AppenderRef]. 
DEBUG StatusLogger createAppenderRef(ref="Console-Appender", level="WARN", Filter=null) 
DEBUG StatusLogger Building Plugin[name=root, class=org.apache.logging.log4j.core.config.LoggerConfig$RootLogger]. 
DEBUG StatusLogger createLogger(additivity="null", level="WARN", includeLocation="null", ={Console-Appender}, ={}, Configuration(Default), Filter=null) 
DEBUG StatusLogger Building Plugin[name=loggers, class=org.apache.logging.log4j.core.config.LoggersPlugin]. 
DEBUG StatusLogger createLoggers(={com.xyz, root}) 

私の設定は正しいですか?

+0

私はorg.xyzとcom.xyzの順序を切り替えたとき、org.xyzがloaddedされ、com.xyzは無視されます。 – user8426833

+0

両方のロガーが同じ 'JSON'キー名' logger'を使用していますか?最後のものだけが作成され、前のものを上書きします。それらを一意の名前に変更することは可能ですか?いくつかのパーサーがdupを上書きするので、JSONの動作について考えてみてください。 –

+0

ありがとうございます。問題がjsonの設定にあるように見えます。 configファイルをxml形式に変換しました。両方のロガーが認識されています。 – user8426833

答えて

1

コンフィグレーションファイルlog4j2JSONに複数のロガーを定義する場合は、をarrayと宣言する必要があります。 logger array

、あなたの設定ファイルは、以下に変更します -

{ 
    "configuration": { 
    "name": "Default", 
    "appenders": { 
     "Console": { 
     "name": "Console-Appender", 
     "target": "SYSTEM_OUT", 
     "PatternLayout": {"pattern": "[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n"} 
     } 
    }, 
    "loggers": { 
     "logger": [ 
       { 
        "name": "org.xyz", 
        "level": "info", 
        "appender-ref": [{"ref": "Console-Appender","level": "info"}] 
       }, 
       { 
        "name": "com.xyz", 
        "level": "debug", 
        "appender-ref": [{"ref": "Console-Appender", "level": "debug"}] 
       } 
       ], 
     "root": { 
     "level": "warn", 
     "appender-ref": {"ref": "Console-Appender","level": "warn"} 
     } 
    } 
    } 
} 
+0

良いキャッチ!出来た。 – user8426833

関連する問題