spring Boot 集成 Graylog

15 阅读1分钟

spring Boot 集成 Graylog 主要是通过 LogbackLog4j2 来发送日志到 Graylog 的 GELF(Graylog Extended Log Format)输入中。以下是详细步骤:


步骤 1:在 Graylog 中配置输入 (Input)

  1. 登录到 Graylog 控制台 (通常是 http://<graylog-server>:9000 )。

  2. 转到 System -> Inputs

  3. Inputs 页面中,选择 GELF UDPGELF TCP 作为输入方式,然后点击 Launch new input

  4. 配置输入:

    • Bind address: 0.0.0.0 或者特定的 IP 地址。
    • Port: 比如 12201
    • Title: 给这个输入一个名字,比如 Spring Boot Logs
  5. 点击 Save 启动输入。


步骤 2:在 Spring Boot 项目中引入依赖

如果使用 Logback(默认的 Spring Boot 日志框架),在 pom.xml 添加:

xml
复制编辑
<dependency>
    <groupId>de.siegmar</groupId>
    <artifactId>logback-gelf</artifactId>
    <version>4.0.1</version>
</dependency>

如果使用 Log4j2,在 pom.xml 添加:

xml
复制编辑
<dependency>
    <groupId>org.graylog2</groupId>
    <artifactId>log4j2-gelf</artifactId>
    <version>1.4.0</version>
</dependency>

步骤 3:配置 Logback (logback-spring.xml)

src/main/resources 目录下创建或修改 logback-spring.xml

xml
复制编辑
<configuration>
   <!-- 定义控制台输出 -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} - %msg%n</pattern>
        </encoder>
    </appender>

    <!-- 定义文件输出 -->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>logs/spring-boot-app.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>logs/spring-boot-app.%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>30</maxHistory>  <!-- 保存 30 天的日志文件 -->
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <!-- 定义 Graylog 输出 -->
    <appender name="GELF" class="de.siegmar.logbackgelf.GelfUdpAppender">
        <graylogHost>127.0.0.1</graylogHost>
        <graylogPort>12201</graylogPort>
        <includeCallerData>true</includeCallerData>
        <additionalField>environment=development</additionalField>
        <additionalField>application=SpringBootApp</additionalField>
    </appender>

    <!-- 配置 Root Logger -->
    <root level="INFO">
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="FILE"/>
        <appender-ref ref="GELF"/>
    </root>
</configuration>

步骤 4:配置 Log4j2 (log4j2.xml)

如果使用 Log4j2,可以在 src/main/resources 目录下创建或修改 log4j2.xml

xml
复制编辑
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Appenders>
        <!-- 控制台输出 -->
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %c{1} - %m%n"/>
        </Console>
        
        <!-- 文件输出 -->
        <RollingFile name="FileAppender" fileName="logs/spring-boot-app.log"
                     filePattern="logs/spring-boot-app-%d{yyyy-MM-dd}.log">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %c{1} - %m%n"/>
            <Policies>
                <TimeBasedTriggeringPolicy interval="1"/>
                <SizeBasedTriggeringPolicy size="10MB"/>
            </Policies>
        </RollingFile>

        <!-- Graylog 输出 -->
        <Gelf name="GELF" server="127.0.0.1" port="12201" protocol="UDP">
            <KeyValuePair key="environment" value="development"/>
            <KeyValuePair key="application" value="SpringBootApp"/>
        </Gelf>
    </Appenders>

    <Loggers>
        <Root level="info">
            <AppenderRef ref="Console"/>
            <AppenderRef ref="FileAppender"/>
            <AppenderRef ref="GELF"/>
        </Root>
    </Loggers>
</Configuration>

步骤 5:验证与调试

  1. 启动 Spring Boot 应用。
  2. 在 Graylog 控制台中,转到 Search 并检查日志数据是否流入。
  3. 可以使用查询语句 application:SpringBootApp 过滤指定应用的日志。