![](/img/trans.png)
[英]log4j:WARN No appenders could be found for logger (org.apache.camel.impl.DefaultCamelContext)
[英]log4j:WARN No appenders could be found for logger (org.apache.commons.beanutils.converters.BooleanConverter)
我知道這個問題一直在出現,但我完全感到困惑。
我正在嘗試使用Log4j2編寫一個KafkaStreams應用程序日志記錄,並且我收到有關沒有附加程序的Log4j(版本1)警告:
log4j:WARN No appenders could be found for logger (org.apache.commons.beanutils.converters.BooleanConverter).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
而且標准的答案是在pom文件中添加一個排除項,但我已經做過一次又一次沒有成功。
它甚至變得更奇怪,因為即使警告可能提示common-beanutils,導致控制台輸出錯誤的行也是如此:
final Map<String, String> serdeConfig = Collections.singletonMap(
AbstractKafkaAvroSerDeConfig.SCHEMA_REGISTRY_URL_CONFIG,
ApplicationConfiguration.SCHEMA_REGISTRY_HOSTS);
我花了整整一整天的時間,似乎根本沒有取得任何進展。
今天過后,我的pom文件雜亂無章,我的依賴項看起來像這樣。
<dependencies>
<!--Configuration Dependency for importing properties file-->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-configuration2</artifactId>
<version>2.2</version>
<!--Excluded in Map-->
<exclusions>
<exclusion>
<artifactId>commons-logging</artifactId>
<groupId>commons-logging</groupId>
</exclusion>
</exclusions>
</dependency>
<!--Dependency used for Apache commons configuration2-->
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.9.3</version>
<exclusions>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
<!--Excluded in Map-->
<exclusion>
<artifactId>commons-logging</artifactId>
<groupId>commons-logging</groupId>
</exclusion>
</exclusions>
</dependency>
<!--Log4j2 Dependency for logging-->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.11.0</version>
</dependency>
<!--Required for Log4j2 Dependency for logging-->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.11.0</version>
</dependency>
<!--Used for Object Json Serialization and Deserialization-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.6</version>
</dependency>
<!--Sumo Logic Dependency for Log4j2 logging-->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.2</version>
<exclusions>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
<!--Excluded in Map-->
<exclusion>
<artifactId>commons-logging</artifactId>
<groupId>commons-logging</groupId>
</exclusion>
</exclusions>
</dependency>
<!--Confluent Platform Dependency for streams avro serializer-->
<dependency>
<groupId>io.confluent</groupId>
<artifactId>kafka-streams-avro-serde</artifactId>
<version>3.3.0</version>
<!--Required due to SLF4j dependency conflict-->
<exclusions>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
<!--Excluded in Map-->
<exclusion>
<artifactId>slf4j-api</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
</exclusions>
</dependency>
<!--Confluent Platform Dependency for avro serializer-->
<dependency>
<groupId>io.confluent</groupId>
<artifactId>kafka-avro-serializer</artifactId>
<version>3.3.0</version>
<!--Excluded in Map-->
<exclusions>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
<exclusion>
<artifactId>commons-logging</artifactId>
<groupId>commons-logging</groupId>
</exclusion>
</exclusions>
</dependency>
<!--Confluent Platform Dependency for schema registry-->
<dependency>
<groupId>io.confluent</groupId>
<artifactId>kafka-schema-registry-client</artifactId>
<version>3.3.0</version>
<!--Required due to SLF4j dependency conflict-->
<exclusions>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--Kafka API Client Dependency-->
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>1.1.0</version>
<!--Excluded in Map-->
<exclusions>
<exclusion>
<artifactId>slf4j-api</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
</exclusions>
</dependency>
<!--Kafka Streams API Client Dependency-->
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-streams</artifactId>
<version>1.1.0</version>
<!--Excluded in Map-->
<exclusions>
<exclusion>
<artifactId>slf4j-api</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
</exclusions>
</dependency>
<!--Avro Serialization Dependency-->
<dependency>
<groupId>org.apache.avro</groupId>
<artifactId>avro</artifactId>
<version>1.8.2</version>
<!--Excluded in Map-->
<exclusions>
<exclusion>
<artifactId>slf4j-api</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
</exclusions>
</dependency>
<!--Avro pojo class generation Dependency-->
<dependency>
<groupId>org.apache.avro</groupId>
<artifactId>avro-maven-plugin</artifactId>
<version>1.8.2</version>
<!--Excluded in Map-->
<exclusions>
<exclusion>
<artifactId>slf4j-api</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
</exclusions>
</dependency>
<!--Avro Serialization Dependency-->
<dependency>
<groupId>org.apache.avro</groupId>
<artifactId>avro-tools</artifactId>
<version>1.8.2</version>
<!--Excluded in Map-->
<exclusions>
<exclusion>
<artifactId>slf4j-api</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
<exclusion>
<artifactId>commons-logging</artifactId>
<groupId>commons-logging</groupId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
而且我已經從依賴關系圖中排除了與slf4j相關的任何內容,甚至在這一點上也沒有進行日志記錄,當前如下所示:
我的應用程序日志記錄正在按預期方式工作(Console和RolingFileAppender),但我似乎無法消除這種頑固的警告。
感謝大家在這里閱讀我的小書; 特別是如果您有任何建議!
最終,我從上面的評論中選擇了選項2。
這樣做的原因是,最后,通過源代碼管理中的其他文件,使日志消息最少並在生產中保持清晰似乎更為重要。 此外,單獨的log4j配置文件的第二個選項使我可以輕松地從依賴項中輕松打開其他調試詳細信息(如果我曾經需要過),例如我的KStreams應用程序似乎無法按預期工作,我很困惑。
具體來說,我實際上創建了兩個版本的log4j配置,以便與其他配置/屬性一樣,本地和(令牌化)發行版具有不同的配置,如下所示:
$ ls src/main/resources/*/*.xml
src/main/resources/local/log4j.xml* src/main/resources/release/log4j.xml*
src/main/resources/local/log4j2.xml* src/main/resources/release/log4j2.xml*
然后,我像平常一樣設置log4j.xml,但默認情況下將根記錄器級別關閉,因此除非更改,否則它將使日志靜默,如下所示:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration debug="false">
<appender name="MyConsoleAppender" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />
</layout>
</appender>
<appender name="MyRollingFileAppender" class="org.apache.log4j.RollingFileAppender">
<param name="append" value="true" />
<param name="maxFileSize" value="100MB" />
<param name="maxBackupIndex" value="10" />
<param name="file" value="c:\\Logs\\KStreamsApp\\Dependencies\\KStreamsAppDependencies.log" />
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n" />
</layout>
</appender>
<root>
<level value="Off" />
<appender-ref ref="MyConsoleAppender" />
<appender-ref ref="MyRollingFileAppender" />
</root>
</log4j:configuration>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.