spring Boot 集成 Graylog 主要是通过 Logback 或 Log4j2 来发送日志到 Graylog 的 GELF(Graylog Extended Log Format)输入中。以下是详细步骤:
✅ 步骤 1:在 Graylog 中配置输入 (Input)
-
登录到 Graylog 控制台 (通常是
http://<graylog-server>:9000
)。 -
转到 System -> Inputs。
-
在 Inputs 页面中,选择 GELF UDP 或 GELF TCP 作为输入方式,然后点击 Launch new input。
-
配置输入:
- Bind address:
0.0.0.0
或者特定的 IP 地址。 - Port: 比如
12201
。 - Title: 给这个输入一个名字,比如
Spring Boot Logs
。
- Bind address:
-
点击 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:验证与调试
- 启动 Spring Boot 应用。
- 在 Graylog 控制台中,转到 Search 并检查日志数据是否流入。
- 可以使用查询语句
application:SpringBootApp
过滤指定应用的日志。