写日志到日志文件以及Kafka

8nuwlpux  于 2021-06-08  发布在  Kafka
关注(0)|答案(2)|浏览(457)

我目前有一个微服务环境,每个服务都将日志写入自己的文件。我想实现分布式日志记录,为此我找到了一个使用elk的解决方案。但我不想干扰我当前的体系结构,即将日志写入多个文件。
有没有可能,我可以写日志文件,然后发送相同的Kafka主题。
另外,我目前正在使用logback进行日志记录。

cczfrluj

cczfrluj1#

您只需在现有配置上添加一个appender,就不需要真正“干扰”您的体系结构。
这里有一个logbackKafkaappender,你可以简单地添加到你的 pom.xml :

<dependency>
    <groupId>com.github.danielwegener</groupId>
    <artifactId>logback-kafka-appender</artifactId>
    <version>0.2.0</version>
    <scope>runtime</scope>
</dependency>
<!-- probably you already have the following or the ones provided by spring, this is an example -->
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.1.2</version>
    <scope>runtime</scope>
</dependency>
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logstash-logback-encoder</artifactId>
    <version>4.8</version>
    <scope>runtime</scope>
</dependency>
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-core</artifactId>
    <version>1.1.6</version>
    <scope>runtime</scope>
</dependency>

在你的 src/main/resources/logback.xml 您可以添加appender并使用它:

<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" />
        <appender-ref ref="STDOUT" />
    </appender>

<root level="info">
    <appender-ref ref="kafkaAppender" />
</root>

如果您查看文档,还可以使用其他附加程序。

x6h2sr28

x6h2sr282#

更标准的模式是直接将事件从微服务发送到kafka。从那里你可以流到elasticsearch和任何数量的其他目标。写入日志然后从日志中读取是完全多余的。

相关问题