logback
直接看文档:https://github.com/danielwegener/logback-kafka-appender
<dependency>
<groupId>com.github.danielwegener</groupId>
<artifactId>logback-kafka-appender</artifactId>
<version>0.2.0</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.3</version>
<scope>runtime</scope>
</dependency>
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<!-- This is the kafkaAppender -->
<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>logs</topic>
<keyingStrategy class="com.github.danielwegener.logback.kafka.keying.NoKeyKeyingStrategy" />
<deliveryStrategy class="com.github.danielwegener.logback.kafka.delivery.AsynchronousDeliveryStrategy" />
<!-- Optional parameter to use a fixed partition -->
<!-- <partition>0</partition> -->
<!-- Optional parameter to include log timestamps into the kafka message -->
<!-- <appendTimestamp>true</appendTimestamp> -->
<!-- each <producerConfig> translates to regular kafka-client config (format: key=value) -->
<!-- producer configs are documented here: https://kafka.apache.org/documentation.html#newproducerconfigs -->
<!-- bootstrap.servers is the only mandatory producerConfig -->
<producerConfig>bootstrap.servers=localhost:9092</producerConfig>
<!-- this is the fallback appender if kafka is not available. -->
<appender-ref ref="STDOUT" />
</appender>
<root level="info">
<appender-ref ref="kafkaAppender" />
</root>
</configuration>
log4j2
<!-- kafka appender 需要额外的依赖 https://logging.apache.org/log4j/2.x/runtime-dependencies.html-->
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>2.7.2</version>
</dependency>
<Properties>
<!-- 日志输出格式配置 -->
<!-- <property name="kafkaPatternLayout" value="%d{yyyy-MM-dd'T'HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n" />-->
<!-- 监控预警平台Kafka ip -->
<property name="kafkaServers" value="127.0.0.1:9092" />
</Properties>
<appenders>
<!--异步-->
<Kafka name="Kafka" topic="xxx" syncSend="true">
<!-- <PatternLayout pattern="${kafkaPatternLayout}"/>-->
<!--
JsonLayout:json格式
compact true会让消息一行,false的话是pretty。
本来就是会带有时间戳信息的,配置includeTimeMillis可以让时间戳信息更精简。
另外可以自己配置自定义key及value。
-->
<JsonLayout compact="true" includeTimeMillis="true">
<KeyValuePair key="time" value="${date:yyyy-MM-dd'T'HH:mm:ss.SSS}"/>
</JsonLayout>
<Property name="bootstrap.servers">${kafkaServers}</Property>
</Kafka>
</appenders>
<loggers>
<Logger name="org.apache.kafka" level="info" />
<root level="info">
<appender-ref ref="Kafka"/>
</root>
</loggers>
网友评论