Java Log4j2-为什么不';t已注册自定义级别
我正在学习log4j2。我试图编写一个在xml配置文件中定义的自定义级别过滤器的示例 由于某种原因,他们似乎没有被认出 log4j2xml配置文件Java Log4j2-为什么不';t已注册自定义级别,java,log4j2,Java,Log4j2,我正在学习log4j2。我试图编写一个在xml配置文件中定义的自定义级别过滤器的示例 由于某种原因,他们似乎没有被认出 log4j2xml配置文件 log4j2\u config\u 20\u Filters\u LevelFilter\u Custom.xml <?xml version="1.0" encoding="UTF-8"?> <Configuration> <CustomLevels> <CustomLevel na
log4j2\u config\u 20\u Filters\u LevelFilter\u Custom.xml
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<CustomLevels>
<CustomLevel name="level350" intLevel="350"/>
<CustomLevel name="level450" intLevel="450"/>
<CustomLevel name="level550" intLevel="550"/>
</CustomLevels>
<Appenders>
<Console name="appender1" target="SYSTEM_OUT">
<PatternLayout charset="UTF-8" pattern="[%date]('%logger'-'%level') %msg\n"/>
</Console>
</Appenders>
<Loggers>
<Logger name="logger1_level350" level="level350" additivity="false">
<AppenderRef ref="appender1"/>
</Logger>
<Logger name="logger1_level450" level="level450" additivity="false">
<AppenderRef ref="appender1"/>
</Logger>
<Logger name="logger1_level550" level="level550" additivity="false">
<AppenderRef ref="appender1"/>
</Logger>
</Loggers>
</Configuration>
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<CustomLevels>
<CustomLevel name="ALL_CAPS_CONFIG_FILE_ONLY_LOGGER_LEVEL_310" intLevel="310"/>
</CustomLevels>
<CustomLevels>
<CustomLevel name="all_small_config_file_only_logger_level_320" intLevel="320"/>
</CustomLevels>
<CustomLevels>
<CustomLevel name="ALL_CAPS_CONFIG_FILE_ONLY_APPENDER_REF_LEVEL_350" intLevel="350"/>
</CustomLevels>
<CustomLevels>
<CustomLevel name="all_small_config_file_only_appender_ref_level_360" intLevel="360"/>
</CustomLevels>
<CustomLevels>
<CustomLevel name="ALL_CAPS_CONFIG_FILE_ONLY_NOT_USED_LEVEL_370" intLevel="370"/>
</CustomLevels>
<Appenders>
<Console name="appender1" target="SYSTEM_OUT">
<PatternLayout charset="UTF-8" pattern="[%date]('%logger'-'%level') %msg\n"/>
</Console>
</Appenders>
<Loggers>
<Logger name="logger1" level="ALL_CAPS_CONFIG_FILE_ONLY_LOGGER_LEVEL_310" additivity="false">
<AppenderRef ref="appender1"/>
</Logger>
<Logger name="logger2" level="all_small_config_file_only_logger_level_320" additivity="false">
<AppenderRef ref="appender1"/>
</Logger>
<Logger name="logger3" level="ALL_SMALL_CONFIG_FILE_ONLY_LOGGER_LEVEL_320" additivity="false">
<AppenderRef ref="appender1"/>
</Logger>
<Logger name="logger4" additivity="false">
<AppenderRef ref="appender1" level="ALL_CAPS_CONFIG_FILE_ONLY_APPENDER_REF_LEVEL_350"/>
</Logger>
<Logger name="logger5" additivity="false">
<AppenderRef ref="appender1" level="all_small_config_file_only_appender_ref_level_360"/>
</Logger>
<Logger name="logger6" additivity="false">
<AppenderRef ref="appender1" level="ALL_SMALL_CONFIG_FILE_ONLY_APPENDER_REF_LEVEL_320"/>
</Logger>
<Logger name="logger7" level="ALL_CAPS_JAVA_ONLY_LEVEL_330" additivity="false">
<AppenderRef ref="appender1"/>
</Logger>
<Logger name="logger8" level="all_small_java_only_level_340" additivity="false">
<AppenderRef ref="appender1"/>
</Logger>
<Logger name="logger9" level="ALL_SMALL_JAVA_ONLY_LEVEL_340" additivity="false">
<AppenderRef ref="appender1"/>
</Logger>
</Loggers>
</Configuration>
输出
OFF : 0
FATAL : 100
ERROR : 200
WARN : 300
INFO : 400
DEBUG : 500
TRACE : 600
ALL : 2147483647
[2018-07-20 06:04:20,819]('logger1_level350'-'FATAL') This is a fatal message
[2018-07-20 06:04:20,821]('logger1_level350'-'ERROR') This is an error message
[2018-07-20 06:04:20,821]('logger1_level450'-'FATAL') This is a fatal message
[2018-07-20 06:04:20,821]('logger1_level450'-'ERROR') This is an error message
[2018-07-20 06:04:20,821]('logger1_level550'-'FATAL') This is a fatal message
[2018-07-20 06:04:20,821]('logger1_level550'-'ERROR') This is an error message
为什么不能识别自定义级别?
我希望自定义级别能够被识别。以及要根据其intLevel“附加”的记录事件。
log4j2\u config\u 20\u 2\u Filters\u LevelFilter\u Custom\u overriding customlevels.xml
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<CustomLevels>
<CustomLevel name="level350" intLevel="350"/>
<CustomLevel name="level450" intLevel="450"/>
<CustomLevel name="level550" intLevel="550"/>
</CustomLevels>
<Appenders>
<Console name="appender1" target="SYSTEM_OUT">
<PatternLayout charset="UTF-8" pattern="[%date]('%logger'-'%level') %msg\n"/>
</Console>
</Appenders>
<Loggers>
<Logger name="logger1_level350" level="level350" additivity="false">
<AppenderRef ref="appender1"/>
</Logger>
<Logger name="logger1_level450" level="level450" additivity="false">
<AppenderRef ref="appender1"/>
</Logger>
<Logger name="logger1_level550" level="level550" additivity="false">
<AppenderRef ref="appender1"/>
</Logger>
</Loggers>
</Configuration>
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<CustomLevels>
<CustomLevel name="ALL_CAPS_CONFIG_FILE_ONLY_LOGGER_LEVEL_310" intLevel="310"/>
</CustomLevels>
<CustomLevels>
<CustomLevel name="all_small_config_file_only_logger_level_320" intLevel="320"/>
</CustomLevels>
<CustomLevels>
<CustomLevel name="ALL_CAPS_CONFIG_FILE_ONLY_APPENDER_REF_LEVEL_350" intLevel="350"/>
</CustomLevels>
<CustomLevels>
<CustomLevel name="all_small_config_file_only_appender_ref_level_360" intLevel="360"/>
</CustomLevels>
<CustomLevels>
<CustomLevel name="ALL_CAPS_CONFIG_FILE_ONLY_NOT_USED_LEVEL_370" intLevel="370"/>
</CustomLevels>
<Appenders>
<Console name="appender1" target="SYSTEM_OUT">
<PatternLayout charset="UTF-8" pattern="[%date]('%logger'-'%level') %msg\n"/>
</Console>
</Appenders>
<Loggers>
<Logger name="logger1" level="ALL_CAPS_CONFIG_FILE_ONLY_LOGGER_LEVEL_310" additivity="false">
<AppenderRef ref="appender1"/>
</Logger>
<Logger name="logger2" level="all_small_config_file_only_logger_level_320" additivity="false">
<AppenderRef ref="appender1"/>
</Logger>
<Logger name="logger3" level="ALL_SMALL_CONFIG_FILE_ONLY_LOGGER_LEVEL_320" additivity="false">
<AppenderRef ref="appender1"/>
</Logger>
<Logger name="logger4" additivity="false">
<AppenderRef ref="appender1" level="ALL_CAPS_CONFIG_FILE_ONLY_APPENDER_REF_LEVEL_350"/>
</Logger>
<Logger name="logger5" additivity="false">
<AppenderRef ref="appender1" level="all_small_config_file_only_appender_ref_level_360"/>
</Logger>
<Logger name="logger6" additivity="false">
<AppenderRef ref="appender1" level="ALL_SMALL_CONFIG_FILE_ONLY_APPENDER_REF_LEVEL_320"/>
</Logger>
<Logger name="logger7" level="ALL_CAPS_JAVA_ONLY_LEVEL_330" additivity="false">
<AppenderRef ref="appender1"/>
</Logger>
<Logger name="logger8" level="all_small_java_only_level_340" additivity="false">
<AppenderRef ref="appender1"/>
</Logger>
<Logger name="logger9" level="ALL_SMALL_JAVA_ONLY_LEVEL_340" additivity="false">
<AppenderRef ref="appender1"/>
</Logger>
</Loggers>
</Configuration>
我没有得到官方支持的答案。但是根据前面的测试,为了使配置文件中定义/声明的级别可用,必须满足两个条件
LogManager.getLogger(“logger\u name”)
或LogManager.getRootLevel()
)才能在java代码中注册和使用所有级别。在尝试使用任何配置文件定义的级别筛选器之前,必须调用记录器Before calling loggers
OFF : 0
FATAL : 100
ERROR : 200
WARN : 300
ALL_CAPS_JAVA_ONLY_LEVEL_330 : 330
ALL_SMALL_JAVA_ONLY_LEVEL_340 : 340
INFO : 400
DEBUG : 500
TRACE : 600
ALL : 2147483647
After calling logger1 only
OFF : 0
FATAL : 100
ERROR : 200
WARN : 300
ALL_CAPS_CONFIG_FILE_ONLY_LOGGER_LEVEL_310 : 310
ALL_SMALL_CONFIG_FILE_ONLY_LOGGER_LEVEL_320 : 320
ALL_CAPS_JAVA_ONLY_LEVEL_330 : 330
ALL_SMALL_JAVA_ONLY_LEVEL_340 : 340
ALL_CAPS_CONFIG_FILE_ONLY_APPENDER_REF_LEVEL_350 : 350
ALL_SMALL_CONFIG_FILE_ONLY_APPENDER_REF_LEVEL_360 : 360
ALL_CAPS_CONFIG_FILE_ONLY_NOT_USED_LEVEL_370 : 370
INFO : 400
DEBUG : 500
TRACE : 600
ALL : 2147483647
Level.getLevel("ALL_CAPS_CONFIG_FILE_ONLY_NOT_USED_LEVEL_370") = ALL_CAPS_CONFIG_FILE_ONLY_NOT_USED_LEVEL_370
[Logger]"logger1": Level=("ALL_CAPS_CONFIG_FILE_ONLY_LOGGER_LEVEL_310" - 310)
[Logger]"logger2": Level=("ERROR" - 200)
[Logger]"logger3": Level=("ERROR" - 200)
[Logger]"logger4": Level=("ERROR" - 200)
[Logger]"logger5": Level=("ERROR" - 200)
[Logger]"logger6": Level=("ERROR" - 200)
[Logger]"logger7": Level=("ALL_CAPS_JAVA_ONLY_LEVEL_330" - 330)
[Logger]"logger8": Level=("ERROR" - 200)
[Logger]"logger9": Level=("ERROR" - 200)
After calling loggers
OFF : 0
FATAL : 100
ERROR : 200
WARN : 300
ALL_CAPS_CONFIG_FILE_ONLY_LOGGER_LEVEL_310 : 310
ALL_SMALL_CONFIG_FILE_ONLY_LOGGER_LEVEL_320 : 320
ALL_CAPS_JAVA_ONLY_LEVEL_330 : 330
ALL_SMALL_JAVA_ONLY_LEVEL_340 : 340
ALL_CAPS_CONFIG_FILE_ONLY_APPENDER_REF_LEVEL_350 : 350
ALL_SMALL_CONFIG_FILE_ONLY_APPENDER_REF_LEVEL_360 : 360
ALL_CAPS_CONFIG_FILE_ONLY_NOT_USED_LEVEL_370 : 370
INFO : 400
DEBUG : 500
TRACE : 600
ALL : 2147483647
Before calling loggers
OFF : 0
FATAL : 100
ERROR : 200
WARN : 300
ALL_CAPS_JAVA_ONLY_LEVEL_330 : 330
ALL_SMALL_JAVA_ONLY_LEVEL_340 : 340
INFO : 400
DEBUG : 500
TRACE : 600
ALL : 2147483647
After calling logger1 only
OFF : 0
FATAL : 100
ERROR : 200
WARN : 300
ALL_CAPS_CONFIG_FILE_ONLY_LOGGER_LEVEL_310 : 310
ALL_SMALL_CONFIG_FILE_ONLY_LOGGER_LEVEL_320 : 320
ALL_CAPS_JAVA_ONLY_LEVEL_330 : 330
ALL_SMALL_JAVA_ONLY_LEVEL_340 : 340
ALL_CAPS_CONFIG_FILE_ONLY_APPENDER_REF_LEVEL_350 : 350
ALL_SMALL_CONFIG_FILE_ONLY_APPENDER_REF_LEVEL_360 : 360
ALL_CAPS_CONFIG_FILE_ONLY_NOT_USED_LEVEL_370 : 370
INFO : 400
DEBUG : 500
TRACE : 600
ALL : 2147483647
Level.getLevel("ALL_CAPS_CONFIG_FILE_ONLY_NOT_USED_LEVEL_370") = ALL_CAPS_CONFIG_FILE_ONLY_NOT_USED_LEVEL_370
[Logger]"logger1": Level=("ALL_CAPS_CONFIG_FILE_ONLY_LOGGER_LEVEL_310" - 310)
[Logger]"logger2": Level=("ERROR" - 200)
[Logger]"logger3": Level=("ERROR" - 200)
[Logger]"logger4": Level=("ERROR" - 200)
[Logger]"logger5": Level=("ERROR" - 200)
[Logger]"logger6": Level=("ERROR" - 200)
[Logger]"logger7": Level=("ALL_CAPS_JAVA_ONLY_LEVEL_330" - 330)
[Logger]"logger8": Level=("ERROR" - 200)
[Logger]"logger9": Level=("ERROR" - 200)
After calling loggers
OFF : 0
FATAL : 100
ERROR : 200
WARN : 300
ALL_CAPS_CONFIG_FILE_ONLY_LOGGER_LEVEL_310 : 310
ALL_SMALL_CONFIG_FILE_ONLY_LOGGER_LEVEL_320 : 320
ALL_CAPS_JAVA_ONLY_LEVEL_330 : 330
ALL_SMALL_JAVA_ONLY_LEVEL_340 : 340
ALL_CAPS_CONFIG_FILE_ONLY_APPENDER_REF_LEVEL_350 : 350
ALL_SMALL_CONFIG_FILE_ONLY_APPENDER_REF_LEVEL_360 : 360
ALL_CAPS_CONFIG_FILE_ONLY_NOT_USED_LEVEL_370 : 370
INFO : 400
DEBUG : 500
TRACE : 600
ALL : 2147483647