拥有 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
你是对的, (parent('sparent's ...) 父记录器是根记录器,并且其级别设置为 Info。但是在 ShardCnsumer 记录器上,级别被覆盖为 Debug。这就是为什么此消息被发送到附加程序。
根据 Appender 的日志级别,该消息仍然可能被忽略,但您的情况似乎并非如此。
总而言之,这些设置会继承到记录器中。但日志记录事件不必冒泡才能得到每个日志记录者的批准。一旦获得批准,他们就直接进入appender。