SpringBoot logback 整合 GrayLog

jiangjihui

写在前面的话

网上看到的文章都是比较1、2年前的了,刚好自己整合了下,来分享下经验。
目前所了解到的springboot应用是通过所使用的不同的日志框架来推送数据到graylog里面,常用的有logback,log4j2等。
参考了网上文章对各个日志框架的分析,这里最终采用的是springboot自带的logback。
至于logback的优势可以参考如下大神的文章,本文不再赘述:

https://blog.csdn.net/xudan10...

graylog 简介

Graylog 是与 ELK 可以相提并论的一款集中式日志管理方案,支持数据收集、检索、可视化 Dashboard。部署起来不像ELK那么重,在docker环境的话凭借一个docker-compose.yml即可完成部署启动运行,非常方便。
用的时候只需要在目标镜像创建容器时添加参数即可。
对graylog想进一步了解的童鞋可以参考如下链接:

https://www.jianshu.com/p/25e...
https://hub.docker.com/r/gray...

开始搭建

创建springboot项目

利用IDEA或者eclipse创建一个springboot项目,可以不选择任何依赖,直接下一步下一步完成即可。

IDE和框架版本

本文所使用的IDE是IDEA,springboot版本为springboot 2.0.3,如果各位童鞋在按照教程走完还发送不了日志到graylog的话,可以更换为使用本文所使用的springboot版本再试

添加依赖

本文所使用的依赖是国外的大神所作,最近都一直有更新,算是还比较新的,附上依赖的github地址:https://github.com/osiegmar/l...

在pom.xml的dependency加入的如下依赖:

        <dependency>
            <groupId>de.siegmar</groupId>
            <artifactId>logback-gelf</artifactId>
            <version>1.1.0</version>
        </dependency>

配置日志输出

在resources目录下(application.properties同级目录)添加logback.xml,内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <!--发送GELF UDP 到 graylog-->
    <!--使用第三方组件 https://github.com/osiegmar/logback-gelf -->
    <appender name="GELF" class="de.siegmar.logbackgelf.GelfUdpAppender">
        <graylogHost>192.168.1.217</graylogHost>
        <graylogPort>12201</graylogPort>
        <!--以下为可选配置-->
        <maxChunkSize>508</maxChunkSize>
        <useCompression>true</useCompression>
        <layout class="de.siegmar.logbackgelf.GelfLayout">
            <originHost>logback-graylog</originHost>
            <includeRawMessage>false</includeRawMessage>
            <includeMarker>true</includeMarker>
            <includeMdcData>true</includeMdcData>
            <includeCallerData>false</includeCallerData>
            <includeRootCauseData>false</includeRootCauseData>
            <includeLevelName>false</includeLevelName>
            <shortPatternLayout class="ch.qos.logback.classic.PatternLayout">
                <pattern>%m%nopex</pattern>
            </shortPatternLayout>
            <fullPatternLayout class="ch.qos.logback.classic.PatternLayout">
                <pattern>%m</pattern>
            </fullPatternLayout>
            <staticField>app_name:backend</staticField>
            <staticField>os_arch:${os.arch}</staticField>
            <staticField>os_name:${os.name}</staticField>
            <staticField>os_version:${os.version}</staticField>
        </layout>
    </appender>

    <root level="INFO">
        <appender-ref ref="GELF" />
        <appender-ref ref="STDOUT"/>
    </root>

</configuration>

其中graylogHost需要改为你自己的 graylog IP地址。其他参数可以在该依赖的github上仔细了解。

启动项目

启动项目之后,即可在graylog控制台中看到项目启动时打印的日志

阅读 5.1k
4 声望
0 粉丝
0 条评论
4 声望
0 粉丝
文章目录
宣传栏