🎓博主介绍:Java、Python、js全栈开发 “多面手”,精通多种编程语言和技术,痴迷于人工智能领域。秉持着对技术的热爱与执着,持续探索创新,愿在此分享交流和学习,与大家共进步。
📖DeepSeek-行业融合之万象视界(附实战案例详解100+)
📖全栈开发环境搭建运行攻略:多语言一站式指南(环境搭建+运行+调试+发布+保姆级详解)
👉感兴趣的可以先收藏起来,希望帮助更多的人
在这里插入图片描述

SpringBoot日志配置大全:Logback与ELK整合实践

一、引言

在现代的软件开发中,日志是不可或缺的一部分。它不仅能帮助开发者快速定位和解决问题,还能为系统的监控、性能分析等提供重要的数据支持。Spring Boot 作为目前主流的 Java 开发框架,其默认的日志系统已经能满足基本的需求,但在复杂的生产环境中,我们通常需要更强大、更灵活的日志配置方案。Logback 是一个功能强大、性能优越的日志框架,而 ELK(Elasticsearch、Logstash、Kibana)则是一套流行的日志收集、存储和可视化解决方案。本文将详细介绍如何在 Spring Boot 项目中进行 Logback 配置,并将其与 ELK 进行整合,以实现高效的日志管理。

二、Spring Boot 中 Logback 基础配置

2.1 引入依赖

在 Spring Boot 项目中,默认已经集成了 Logback,所以一般情况下不需要额外引入依赖。如果使用 Maven 构建项目,确保 pom.xml 中有以下依赖:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.7.5</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

2.2 配置文件

src/main/resources 目录下创建 logback-spring.xml 文件,这是 Spring Boot 推荐的 Logback 配置文件命名方式。以下是一个简单的配置示例:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!-- 定义日志输出格式 -->
    <property name="LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"/>

    <!-- 控制台输出 -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${LOG_PATTERN}</pattern>
        </encoder>
    </appender>

    <!-- 根日志配置 -->
    <root level="info">
        <appender-ref ref="CONSOLE"/>
    </root>
</configuration>

上述配置中,定义了一个名为 CONSOLE 的控制台输出 appender,并将其添加到根日志中。日志输出格式通过 LOG_PATTERN 属性进行定义。

2.3 日志级别配置

Logback 支持多种日志级别,包括 TRACEDEBUGINFOWARNERROR。可以在配置文件中为不同的包或类设置不同的日志级别。例如:

<logger name="com.example.demo" level="debug"/>

上述配置将 com.example.demo 包下的所有类的日志级别设置为 DEBUG

三、Logback 高级配置

3.1 日志文件输出

除了控制台输出,通常还需要将日志输出到文件中。可以在 logback-spring.xml 中添加文件输出 appender:

<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>logs/app.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <fileNamePattern>logs/app.%d{yyyy-MM-dd}.log</fileNamePattern>
        <maxHistory>30</maxHistory>
    </rollingPolicy>
    <encoder>
        <pattern>${LOG_PATTERN}</pattern>
    </encoder>
</appender>

<root level="info">
    <appender-ref ref="CONSOLE"/>
    <appender-ref ref="FILE"/>
</root>

上述配置中,定义了一个名为 FILE 的文件输出 appender,将日志输出到 logs/app.log 文件中,并按天进行滚动,最多保留 30 天的日志文件。

3.2 异步日志

为了提高日志性能,可以使用异步日志。在 Logback 中,可以通过 AsyncAppender 实现异步日志:

<appender name="ASYNC_FILE" class="ch.qos.logback.classic.AsyncAppender">
    <appender-ref ref="FILE"/>
</appender>

<root level="info">
    <appender-ref ref="CONSOLE"/>
    <appender-ref ref="ASYNC_FILE"/>
</root>

上述配置中,将 FILE appender 包装在 AsyncAppender 中,实现异步日志输出。

3.3 日志过滤

可以通过过滤器对日志进行过滤,只输出符合条件的日志。例如,只输出 ERROR 级别的日志:

<appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>logs/error.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <fileNamePattern>logs/error.%d{yyyy-MM-dd}.log</fileNamePattern>
        <maxHistory>30</maxHistory>
    </rollingPolicy>
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
        <level>ERROR</level>
        <onMatch>ACCEPT</onMatch>
        <onMismatch>DENY</onMismatch>
    </filter>
    <encoder>
        <pattern>${LOG_PATTERN}</pattern>
    </encoder>
</appender>

<root level="info">
    <appender-ref ref="CONSOLE"/>
    <appender-ref ref="FILE"/>
    <appender-ref ref="ERROR_FILE"/>
</root>

上述配置中,定义了一个名为 ERROR_FILE 的文件输出 appender,通过 LevelFilter 过滤器只输出 ERROR 级别的日志。

四、ELK 简介

4.1 Elasticsearch

Elasticsearch 是一个分布式的搜索和分析引擎,它可以快速地存储、搜索和分析大量的数据。在日志管理中,Elasticsearch 用于存储日志数据,提供高效的搜索和查询功能。

4.2 Logstash

Logstash 是一个开源的数据收集引擎,它可以从各种数据源(如文件、数据库、网络等)收集数据,并对数据进行过滤、转换和处理,最后将数据发送到 Elasticsearch 中进行存储。

4.3 Kibana

Kibana 是一个开源的可视化工具,它可以与 Elasticsearch 集成,提供强大的可视化界面,帮助用户快速地分析和展示日志数据。

五、Logback 与 ELK 整合实践

5.1 安装和配置 ELK

5.1.1 安装 Elasticsearch

可以从 Elasticsearch 官方网站下载并安装 Elasticsearch。安装完成后,启动 Elasticsearch 服务:

./bin/elasticsearch
5.1.2 安装 Logstash

从 Logstash 官方网站下载并安装 Logstash。在 config 目录下创建 logstash.conf 文件,配置如下:

input {
    tcp {
        port => 5000
        codec => json_lines
    }
}

output {
    elasticsearch {
        hosts => ["localhost:9200"]
        index => "logs-%{+YYYY.MM.dd}"
    }
}

上述配置中,Logstash 监听 5000 端口,接收 JSON 格式的日志数据,并将数据发送到 Elasticsearch 中。

启动 Logstash 服务:

./bin/logstash -f config/logstash.conf
5.1.3 安装 Kibana

从 Kibana 官方网站下载并安装 Kibana。启动 Kibana 服务:

./bin/kibana

5.2 Logback 配置

logback-spring.xml 中添加 Logstash 输出 appender:

<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpAppender">
    <destination>localhost:5000</destination>
    <encoder class="net.logstash.logback.encoder.LogstashEncoder"/>
</appender>

<root level="info">
    <appender-ref ref="CONSOLE"/>
    <appender-ref ref="FILE"/>
    <appender-ref ref="LOGSTASH"/>
</root>

上述配置中,定义了一个名为 LOGSTASH 的 Logstash 输出 appender,将日志数据发送到 Logstash 的 5000 端口。

5.3 验证整合效果

启动 Spring Boot 项目,查看 Elasticsearch 和 Kibana。在 Kibana 的 Discover 页面中,可以搜索和查看日志数据。

六、总结

本文详细介绍了 Spring Boot 中 Logback 的基础配置和高级配置,以及如何将 Logback 与 ELK 进行整合。通过合理的日志配置和 ELK 整合,可以实现高效的日志管理和分析,帮助开发者更好地监控和维护系统。

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐