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})
私の設定は正しいですか?
私はorg.xyzとcom.xyzの順序を切り替えたとき、org.xyzがloaddedされ、com.xyzは無視されます。 – user8426833
両方のロガーが同じ 'JSON'キー名' logger'を使用していますか?最後のものだけが作成され、前のものを上書きします。それらを一意の名前に変更することは可能ですか?いくつかのパーサーがdupを上書きするので、JSONの動作について考えてみてください。 –
ありがとうございます。問題がjsonの設定にあるように見えます。 configファイルをxml形式に変換しました。両方のロガーが認識されています。 – user8426833