需求:日志同步到kafka。
在网上找的资料,自己配置时出现的很多问题,这里记录一下,也供大家借鉴一下。
首先加入依赖:
// https://mvnrepository.com/artifact/com.github.danielwegener/logback-kafka-appender
implementation group: 'com.github.danielwegener', name: 'logback-kafka-appender', version: '0.2.0-RC2'
logback-spring-kafka.xml:
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
<contextName>logback</contextName>
<property resource="application.properties"/>
<springProperty scope="context" name="LOGBACK_SERVERS" source="logback.servers"/>
<property name="LOG_HOME" value="/data/logs/log"/>
<!--输出到控制台-->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<!--<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>-->
<pattern>[%d{yyyy-MM-dd' 'HH:mm:ss.sss}] [%t] [%-5p] [%C] [%L] %m%n</pattern>
</encoder>
</appender>
<!--输出到文件-->
<appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
<File>${LOG_HOME}/allocation.log</File>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${LOG_HOME}/allocation.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!--日志文件最大的大小-->
<!-- 日志文件不能超过3GB,若超过3GB,日志文件会以索引0开始,命名日志文件,例如fss_task.0.log -->
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>3GB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<!--<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}[:%line] - %msg%n</pattern>-->
<!--<pattern>%-15d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{0}[%file:%line] - %msg%n %ex{2}</pattern>-->
<pattern>[%d{yyyy-MM-dd' 'HH:mm:ss.sss}] [%t] [%-5p] [%C] [%L] %m%n</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<!--输出到kafka-->
<appender name="kafkaAppender" class="com.github.danielwegener.logback.kafka.KafkaAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
<topic>ledger_logs</topic>
<keyingStrategy class="com.github.danielwegener.logback.kafka.keying.NoKeyKeyingStrategy"/>
<deliveryStrategy class="com.github.danielwegener.logback.kafka.delivery.AsynchronousDeliveryStrategy"/>
<producerConfig>bootstrap.servers=${LOGBACK_SERVERS}</producerConfig>
</appender>
<root level="info">
<appender-ref ref="console"/>
<appender-ref ref="file"/>
<appender-ref ref="kafkaAppender"/>
</root>
</configuration>
application.properties中添加(如果使用的logback-spring.xml默认文件名,这里可以不加):
logging.config=classpath:logback-spring-kafka.xml
这里注意一下:
1.logback.servers是application.properties配置文件中的变量,如果使用配置文件中的变量,logback的xml名字不能是‘logback-spring.xml’等几个默认的文件名,因为logback的xml文件会先于配置文件加载,这样取不到变量(在网上找的资料说必须用logback-spring.xml这个名字才能取到变量,反正我的情况取不到。其他几个默认名字大家可以自己搜一下)。
2.输出到kafka的配置,name="kafkaAppender",kafkaAppender这个名字也不能更换,否则会一直报6000ms的超时错误。
至于kafka的安装这里就不做介绍了,大家可以自己去搜资料,注意一下依赖和kafka版本就是了。
来源:CSDN
作者:简单就好o_0
链接:https://blog.csdn.net/pp3736245/article/details/103462748