Log4j 正在记录错误(较低)级别的日志

问题描述 投票:0回答:1

拥有 INFO 级别的根记录器:

rootLogger.level=INFO
rootLogger.appenderRef.console.ref=ConsoleAppender

以及具有 DEBUG 级别的特定记录器:

logger.kinesis.name=org.apache.flink.streaming.connectors.kinesis.FlinkKinesisConsumer
logger.kinesis.level=DEBUG

为什么在 DEBUG 级别会记录这样的行:

DEBUG org.apache.flink.streaming.connectors.kinesis.internals.ShardConsumer [] - stream: 

文档每个记录器将从其父级继承级别,但父级为

org.apache.flink.streaming.connectors.kinesis.internals.ShardConsumer

是根记录器,具有 INFO 级别。

这是整个配置:

rootLogger.level=INFO
rootLogger.appenderRef.console.ref=ConsoleAppender

# Log all infos to the console
appender.console.name=ConsoleAppender
appender.console.type=CONSOLE
appender.console.layout.type=PatternLayout
appender.console.layout.pattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p %-60c %x - %m%n
appender.console.filter.threshold.type=ThresholdFilter
appender.console.filter.threshold.level=${sys:console.log.level:-ALL}


logger.kinesis.consumer.name=org.apache.flink.streaming.connectors.kinesis.FlinkKinesisConsumer
logger.kinesis.consumer.level=DEBUG
java log4j2
1个回答
0
投票

你是对的, (parent('sparent's ...) 父记录器是根记录器,并且其级别设置为 Info。但是在 ShardCnsumer 记录器上,级别被覆盖为 Debug。这就是为什么此消息被发送到附加程序。

根据 Appender 的日志级别,该消息仍然可能被忽略,但您的情况似乎并非如此。

总而言之,这些设置会继承到记录器中。但日志记录事件不必冒泡才能得到每个日志记录者的批准。一旦获得批准,他们就直接进入appender。

© www.soinside.com 2019 - 2024. All rights reserved.