logback接入kafka

最近想把java程序日誌接入ELK,方便以後容器化管理,接入ELK有兩種方式實現,第一種是在程序的地方都放置一個L(Logstash),但是這中方式不太現實,

另一種就是將日誌輸入kafka,有kafka傳入ELK中,而將日誌傳入kafka,不想在代碼中實現,如果logback日誌可以直接輸出到kafka最好,就找解決方案。

這是logback的配置文件信息:

<configuration>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH🇲🇲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🇲🇲ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>-->
            <pattern>{"theme":"aaa","thread":"%thread","level":"%-5level","msg":"%msg"}</pattern>
        </encoder>
        <topic>test</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=192.168.1.1: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>

然後pom.xml需要引入的jar包

<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.2.3</version>
    <scope>runtime</scope>
</dependency>

<dependency>
    <groupId>com.github.danielwegener</groupId>
    <artifactId>logback-kafka-appender</artifactId>
    <version>0.2.0-RC1</version>
    <scope>runtime</scope>
</dependency>

有些會引入一些其他包我解釋下:

logback-classic包含了logback-core,不需要再單獨引用了。

logback-access訪問模塊與Servlet容器集成提供通過Http來訪問日誌的功能(用的少)。

 

 

 

 

參考資源:https://github.com/danielwegener/logback-kafka-appender

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章