Java Log4j2-为什么不';t已注册自定义级别

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。我试图编写一个在xml配置文件中定义的自定义级别过滤器的示例

由于某种原因,他们似乎没有被认出

log4j2xml配置文件

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>
我没有得到官方支持的答案。但是根据前面的测试,为了使配置文件中定义/声明的级别可用,必须满足两个条件

  • 该级别的名称必须为ALL CAPITAL,才能在配置文件中使用。(这也适用于配置文件中使用的java定义的级别)
  • 必须至少调用一个记录器(使用
    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