没有为带有 Spring 引导的 log4j2 中的组件 属性 提供类型属性
No type attribute provided for component property in log4j2 with Spring Boot
我已经实现了一个简单的应用程序,用于将日志流式传输到 apache kafka.In 生产者,我已经为配置实现了 log4j2.xml
文件,现在我必须将 .xml
文件转换为 properties
文件。它与 .xml
一起正常工作,但是当我使用 properties
文件时,发生了以下错误。
Exception in thread "main" java.lang.ExceptionInInitializerError
at org.apache.commons.logging.LogAdapter$Log4jAdapter.createLog(LogAdapter.java:122)
at org.apache.commons.logging.LogAdapter.createLog(LogAdapter.java:89)
at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:67)
at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:59)
at org.springframework.boot.SpringApplication.<clinit>(SpringApplication.java:196)
at com.benz.producer.log.api.LogProducerApplication.main(LogProducerApplication.java:10)
Caused by: org.apache.logging.log4j.core.config.ConfigurationException: No type attribute provided for component property
at org.apache.logging.log4j.core.config.properties.PropertiesConfigurationBuilder.createComponent(PropertiesConfigurationBuilder.java:334)
at org.apache.logging.log4j.core.config.properties.PropertiesConfigurationBuilder.processRemainingProperties(PropertiesConfigurationBuilder.java:348)
这是我的 .xml
和 properties
文件
log4j2.xml
<?xml version="1.0" encoding="UTF-8"?>
<Configuration name="spring-boot-kafka-log" status="info"
packages="com.benz.producer.log.api">
<Appenders>
<Kafka name="Kafka" topic="LOG_TOPIC">
<PatternLayout pattern="%date %message"/>
<Property name="bootstrap.servers">
localhost:9092
</Property>
</Kafka>
<Async name="Async">
<AppenderRef ref="Kafka"/>
</Async>
<Console name="stdout" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} %-5p [%-7t] %F:%L - %m%n"/>
</Console>
</Appenders>
<Loggers>
<Root level="INFO">
<AppenderRef ref="Kafka"/>
<AppenderRef ref="stdout"/>
</Root>
<Logger name="org.apache.kafka" level="WARN"/>
</Loggers>
</Configuration>
log4j2.properties
name=spring-boot-kafka-log
status=info
packages=com.benz.producer.log.api
appenders=console,kafka
appender.console.type=console
appender.console.name=stdout
appender.console.target=SYSTEM_OUT
appender.console.layout.type=PatternLayout
appender.console.layout.pattern=%d{HH:mm:ss.SSS} %-5 [%-7t] %F:%L - %m%n
appender.kafka.type=kafka
appender.kafka.name=Kafka
appender.kafka.topic=LOG_TOPIC
appender.kafka.layout.type=PatternLayout
appender.kafka.layout.pattern=%date %message
appender.kafka.property.name=bootstrap.servers
appender.kafka.property.value=localhost:9092
rootLogger.level=INFO
rootLogger.appenderRef.ref=kafka
rootLogger.appenderRef.kafka.ref=stdout
logger.name=org.apache.kafka
logger.level=WARN
已更新
No type attribute provided for component property
异常通过将 appender.kafka.property.type=property
添加到属性文件中来修复。但是当我再次 运行 时,出现了不同的错误。
Exception in thread "main" java.lang.ExceptionInInitializerError
at org.apache.commons.logging.LogAdapter$Log4jAdapter.createLog(LogAdapter.java:122)
at org.apache.commons.logging.LogAdapter.createLog(LogAdapter.java:89)
at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:67)
at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:59)
at org.springframework.boot.SpringApplication.<clinit>(SpringApplication.java:196)
at com.benz.producer.log.api.LogProducerApplication.main(LogProducerApplication.java:10)
Caused by: java.lang.StringIndexOutOfBoundsException: begin 0, end -1, length 5
at java.base/java.lang.String.checkBoundsBeginEnd(String.java:3319)
at java.base/java.lang.String.substring(String.java:1874)
您应该按照 appenders 配置配置您的 kafka
记录器:
name=spring-boot-kafka-log
status=info
packages=com.benz.producer.log.api
appenders=console,kafka
appender.console.type=console
appender.console.name=stdout
appender.console.target=SYSTEM_OUT
appender.console.layout.type=PatternLayout
appender.console.layout.pattern=%d{HH:mm:ss.SSS} %-5 [%-7t] %F:%L - %m%n
appender.kafka.type=kafka
appender.kafka.name=Kafka
appender.kafka.topic=LOG_TOPIC
appender.kafka.layout.type=PatternLayout
appender.kafka.layout.pattern=%date %message
appender.kafka.property.name=bootstrap.servers
appender.kafka.property.value=localhost:9092
rootLogger.level = INFO
rootLogger.appenderRefs = console, kafka
rootLogger.appenderRef.kafka.ref = Kafka
rootLogger.appenderRef.console.ref = stdout
loggers = kafka
logger.kafka.name = org.apache.kafka
logger.kafka.level = WARN
我已经实现了一个简单的应用程序,用于将日志流式传输到 apache kafka.In 生产者,我已经为配置实现了 log4j2.xml
文件,现在我必须将 .xml
文件转换为 properties
文件。它与 .xml
一起正常工作,但是当我使用 properties
文件时,发生了以下错误。
Exception in thread "main" java.lang.ExceptionInInitializerError
at org.apache.commons.logging.LogAdapter$Log4jAdapter.createLog(LogAdapter.java:122)
at org.apache.commons.logging.LogAdapter.createLog(LogAdapter.java:89)
at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:67)
at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:59)
at org.springframework.boot.SpringApplication.<clinit>(SpringApplication.java:196)
at com.benz.producer.log.api.LogProducerApplication.main(LogProducerApplication.java:10)
Caused by: org.apache.logging.log4j.core.config.ConfigurationException: No type attribute provided for component property
at org.apache.logging.log4j.core.config.properties.PropertiesConfigurationBuilder.createComponent(PropertiesConfigurationBuilder.java:334)
at org.apache.logging.log4j.core.config.properties.PropertiesConfigurationBuilder.processRemainingProperties(PropertiesConfigurationBuilder.java:348)
这是我的 .xml
和 properties
文件
log4j2.xml
<?xml version="1.0" encoding="UTF-8"?>
<Configuration name="spring-boot-kafka-log" status="info"
packages="com.benz.producer.log.api">
<Appenders>
<Kafka name="Kafka" topic="LOG_TOPIC">
<PatternLayout pattern="%date %message"/>
<Property name="bootstrap.servers">
localhost:9092
</Property>
</Kafka>
<Async name="Async">
<AppenderRef ref="Kafka"/>
</Async>
<Console name="stdout" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} %-5p [%-7t] %F:%L - %m%n"/>
</Console>
</Appenders>
<Loggers>
<Root level="INFO">
<AppenderRef ref="Kafka"/>
<AppenderRef ref="stdout"/>
</Root>
<Logger name="org.apache.kafka" level="WARN"/>
</Loggers>
</Configuration>
log4j2.properties
name=spring-boot-kafka-log
status=info
packages=com.benz.producer.log.api
appenders=console,kafka
appender.console.type=console
appender.console.name=stdout
appender.console.target=SYSTEM_OUT
appender.console.layout.type=PatternLayout
appender.console.layout.pattern=%d{HH:mm:ss.SSS} %-5 [%-7t] %F:%L - %m%n
appender.kafka.type=kafka
appender.kafka.name=Kafka
appender.kafka.topic=LOG_TOPIC
appender.kafka.layout.type=PatternLayout
appender.kafka.layout.pattern=%date %message
appender.kafka.property.name=bootstrap.servers
appender.kafka.property.value=localhost:9092
rootLogger.level=INFO
rootLogger.appenderRef.ref=kafka
rootLogger.appenderRef.kafka.ref=stdout
logger.name=org.apache.kafka
logger.level=WARN
已更新
No type attribute provided for component property
异常通过将 appender.kafka.property.type=property
添加到属性文件中来修复。但是当我再次 运行 时,出现了不同的错误。
Exception in thread "main" java.lang.ExceptionInInitializerError
at org.apache.commons.logging.LogAdapter$Log4jAdapter.createLog(LogAdapter.java:122)
at org.apache.commons.logging.LogAdapter.createLog(LogAdapter.java:89)
at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:67)
at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:59)
at org.springframework.boot.SpringApplication.<clinit>(SpringApplication.java:196)
at com.benz.producer.log.api.LogProducerApplication.main(LogProducerApplication.java:10)
Caused by: java.lang.StringIndexOutOfBoundsException: begin 0, end -1, length 5
at java.base/java.lang.String.checkBoundsBeginEnd(String.java:3319)
at java.base/java.lang.String.substring(String.java:1874)
您应该按照 appenders 配置配置您的 kafka
记录器:
name=spring-boot-kafka-log
status=info
packages=com.benz.producer.log.api
appenders=console,kafka
appender.console.type=console
appender.console.name=stdout
appender.console.target=SYSTEM_OUT
appender.console.layout.type=PatternLayout
appender.console.layout.pattern=%d{HH:mm:ss.SSS} %-5 [%-7t] %F:%L - %m%n
appender.kafka.type=kafka
appender.kafka.name=Kafka
appender.kafka.topic=LOG_TOPIC
appender.kafka.layout.type=PatternLayout
appender.kafka.layout.pattern=%date %message
appender.kafka.property.name=bootstrap.servers
appender.kafka.property.value=localhost:9092
rootLogger.level = INFO
rootLogger.appenderRefs = console, kafka
rootLogger.appenderRef.kafka.ref = Kafka
rootLogger.appenderRef.console.ref = stdout
loggers = kafka
logger.kafka.name = org.apache.kafka
logger.kafka.level = WARN