如何在karaf容器中实现log4j的日志实时写入kafka消息队列
Log4j提供了AppenderSkeleton接口,提供给开发者实现自己的日志追加功能。为了实现将log4j日志追加到
kafka消息中间件中,需要实现AppenderSkeleton,然后在log4j配置文件中增加如下配置:
log4j.rootLogger=INFO, async, kafka, osgi:*
log4j.appender.kafka=org.apache.kafka.log4jappender.KafkaLog4jAppender
log4j.appender.kafka.topic=test
log4j.appender.kafka.brokerList=localhost:9092
log4j.appender.kafka.compressionType=none
log4j.appender.kafka.syncSend=true
log4j.appender.kafka.layout=org.apache.log4j.PatternLayout
log4j.appender.kafka.layout.ConversionPattern=%d{ISO8601} | %-5.5p | %-16.16t | %-32.32c{1} | %X{bundle.id} - %X{bundle.name} - %X{bundle.version} | %m%n
这样当log4j模块启动时,会加载KafkaLog4jAppender日志追加类,KafkaLog4jAppender能够监听到日志时间LoggintEvent,并做对应的处理。(写入到kafka中)
对于maven工程,可以添以下两个加依赖,安