汇合docker log4j日志记录程序级别配置

gpnt7bae  于 2021-06-04  发布在  Kafka
关注(0)|答案(1)|浏览(464)

我正在使用 confluentinc/cp-kafka docker image和我正在设置以下日志容器环境变量:

KAFKA_LOG4J_ROOT_LOGLEVEL: ERROR
KAFKA_LOG4J_LOGGERS: >-
    org.apache.zookeeper=ERROR,
    org.apache.kafka=ERROR,
    kafka=ERROR,
    kafka.cluster=ERROR,
    kafka.controller=ERROR,
    kafka.coordinator=ERROR,
    kafka.log=ERROR,
    kafka.server=ERROR,
    kafka.zookeeper=ERROR,
    state.change.logger=ERROR

我在Kafka日志中看到,Kafka从以下配置开始:

===> ENV Variables ...
ALLOW_UNSIGNED=false
COMPONENT=kafka
CONFLUENT_DEB_VERSION=1
CONFLUENT_PLATFORM_LABEL=
CONFLUENT_VERSION=5.4.1
...
KAFKA_LOG4J_LOGGERS=org.apache.zookeeper=ERROR, org.apache.kafka=ERROR, kafka=ERROR, kafka.cluster=ERROR, kafka.controller=ERROR, kafka.coordinator=ERROR, kafka.log=ERROR, kafka.server=ERROR, kafka.zookeeper=ERROR, state.change.logger=ERROR
KAFKA_LOG4J_ROOT_LOGLEVEL=ERROR
...

我仍然能在日志里看到更远的地方 INFO 以及 TRACE 日志级别。例如:

[2020-03-26 16:22:12,838] INFO [Controller id=1001] Ready to serve as the new controller with epoch 1 (kafka.controller.KafkaController)
[2020-03-26 16:22:12,848] INFO [Controller id=1001] Partitions undergoing preferred replica election:  (kafka.controller.KafkaController)
[2020-03-26 16:22:12,849] INFO [Controller id=1001] Partitions that completed preferred replica election:  (kafka.controller.KafkaController)
[2020-03-26 16:22:12,855] INFO [Controller id=1001] Skipping preferred replica election for partitions due to topic deletion:  (kafka.controller.KafkaController)

如何才能真正停用低于某个级别的日志?在上面的例子中,我真的只想 ERROR 日志。
上述方法是合流文档中描述的方法。
apachekafka源代码列出了我无法影响使用 KAFKA_LOG4J_LOGGERS docker环境变量。

p4tfgftt

p4tfgftt1#

我去给那个女人找麻烦了 Dockerfile 检查了Kafka集装箱。造成这种现象的原因是yaml多行线折叠。
因此,提供的环境变量(使用yaml多行值)在运行时为:

KAFKA_LOG4J_LOGGERS=org.apache.zookeeper=ERROR, org.apache.kafka=ERROR, kafka=ERROR, kafka.cluster=ERROR, kafka.controller=ERROR, kafka.coordinator=ERROR, kafka.log=ERROR, kafka.server=ERROR, kafka.zookeeper=ERROR, state.change.logger=ERROR

而不是(中间没有空格):

KAFKA_LOG4J_LOGGERS=org.apache.zookeeper=ERROR,org.apache.kafka=ERROR, kafka=ERROR, kafka.cluster=ERROR,kafka.controller=ERROR, kafka.coordinator=ERROR,kafka.log=ERROR,kafka.server=ERROR,kafka.zookeeper=ERROR,state.change.logger=ERROR

这是在容器内部生成的 /etc/kafka/log4j.properties 文件:

log4j.rootLogger=ERROR, stdout

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%d] %p %m (%c)%n

log4j.logger.kafka.authorizer.logger=WARN
log4j.logger. kafka.cluster=ERROR
log4j.logger.kafka.producer.async.DefaultEventHandler=DEBUG
log4j.logger. kafka.zookeeper=ERROR
log4j.logger. org.apache.kafka=ERROR
log4j.logger. kafka.coordinator=ERROR
log4j.logger.org.apache.zookeeper=ERROR
log4j.logger.kafka.log.LogCleaner=INFO
log4j.logger. kafka.controller=ERROR
log4j.logger.kafka=INFO
log4j.logger. kafka.log=ERROR
log4j.logger. state.change.logger=ERROR
log4j.logger. kafka=ERROR
log4j.logger. kafka.server=ERROR
log4j.logger.kafka.controller=TRACE
log4j.logger.kafka.network.RequestChannel$=WARN
log4j.logger.kafka.request.logger=WARN
log4j.logger.state.change.logger=TRACE

如果确实需要在yaml多行值中拆分长行,则必须使用此yaml语法。
代码中的更多提示:
这里是 log4j.properties 文件是在运行合流容器时生成的。
这些是Kafka将开始的默认日志级别。
这些应该都是Kafka支持的伐木工人

相关问题