使用 sfl4j 的库不遵循 log42.xml 配置

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

我在 Java 应用程序中使用 kafka-clients 库,并且日志没有附加到我在 log4j2.xml 中指定的 kafka 日志中。但是,

org.springframework.kafka
日志会很好地附加到我指定的日志中。

我注意到kafka-clients使用slf4j,根本原因与此相关吗?

log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration xmlns="https://logging.apache.org/xml/ns"
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xsi:schemaLocation="
                   https://logging.apache.org/xml/ns
                   https://logging.apache.org/xml/ns/log4j-config-2.xsd">
  <Appenders>
    <Console name="CONSOLE">
      <PatternLayout pattern="%p - %m%n"/>
    </Console>
    <File name="MAIN" fileName="logs/main.log">
      <JsonTemplateLayout/>
    </File>
    <File name="KAFKALOG" fileName="logs/kafka.log">
      <PatternLayout pattern="%d [%t] %p %c - %m%n"/>
    </File>
  </Appenders>
  <Loggers>
    <Root level="INFO">
      <AppenderRef ref="CONSOLE" level="WARN"/>
      <AppenderRef ref="MAIN"/>
    </Root>
        <Logger name="org.springframework.kafka" level="INFO">
            <AppenderRef ref="KAFKALOG"/>
        </Logger>

        <Logger name="org.apache.kafka" level="INFO">
            <AppenderRef ref="KAFKALOG"/>
        </Logger>
  </Loggers>
</Configuration>
java apache-kafka log4j2
1个回答
0
投票

您需要将 SLF4J 到 Log4j2 桥接依赖项添加到您的项目中。

<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j2-impl</artifactId>
<version>x.xx.x</version>  
</dependency>

并且您可能需要稍微修改 kafka 记录器配置以捕获所有 Kafka 相关日志

<Loggers>
<Root level="INFO">
    <AppenderRef ref="CONSOLE" level="WARN"/>
    <AppenderRef ref="MAIN"/>
</Root>

<!-- Combine both Kafka loggers into one -->
<Logger name="kafka" level="INFO" additivity="false">
    <AppenderRef ref="KAFKALOG"/>
</Logger>

<Logger name="org.apache.kafka" level="INFO" additivity="false">
    <AppenderRef ref="KAFKALOG"/>
</Logger>

<Logger name="org.springframework.kafka" level="INFO" additivity="false">
    <AppenderRef ref="KAFKALOG"/>
</Logger>
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.