SpringBoot多环境下集成logback的配置指南

 更新时间:2026年02月09日 09:32:30   作者:清山博客  
Logback是由log4j创始人设计的又一个开源日志组件,可用于项目日志功能,下面小编就来和大家详细介绍一下SpringBoot如何在多环境下集成logback吧

Logback是由log4j创始人设计的又一个开源日志组件。可用于项目日志功能。

第1步:添加坐标依赖

<!--logback-->
<dependency>
	<groupId>ch.qos.logback</groupId>
	<artifactId>logback-classic</artifactId>
	<version>1.4.14</version>
</dependency>

logback里依赖了slf4j,就不用单独添加slf4j坐标了

第2步:创建logback配置文件

在resources目录下创建logback文件夹,并创建dev.xml,pro.xml两个配置文件,用于配置开发环境和生产环境的logback配置。目录结构像这样:

第3步:在application.yaml中根据运行环境读取logback配置

#日志配置
logging:
  config: classpath:logback/${spring.profiles.active}.xml #根据运行环境读取日志配置

第4步:配置logback/dev.xml文件(开发环境的日志配置)

开发环境中,可以将日志打印在控制台。

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
    <!-- 设置控制台彩色日志格式,注意:%L打印行号对性能有影响,因此不建议在生产环境使用。 -->
    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
    <conversionRule conversionWord="wEx"
                    converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
    <property name="CONSOLE_LOG_PATTERN"
              value="%clr([%d{HH:mm:ss}){faint} %clr(%p) %clr(%.10t]){faint} %clr(%C{39}){cyan} %clr(%M:%L){magenta}: %m%n%wEx"/>
    <!--设置输出到控制台-->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder" charset="UTF-8">
            <!-- 设置输出到控制台的日志格式 -->
            <pattern>${CONSOLE_LOG_PATTERN}</pattern>
        </encoder>
    </appender>
    <!--设置日志级别-->
    <root level="INFO">
        <appender-ref ref="CONSOLE"/>
    </root>
</configuration>

第5步:配置logback/pro.xml文件(生成环境的日志配置)

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
    <!-- 应用名称 -->
    <springProperty scope="context" name="springApplicationName" source="spring.application.name"
                    defaultValue="spring"/>
    <!-- 环境 -->
    <springProperty scope="context" name="springProfilesActive" source="spring.profiles.active" defaultValue="pro"/>
    <!-- 重启后是否删除日志 -->
    <springProperty scope="context" name="cleanHistoryOnStart"
                    source="logging.logback.rollingpolicy.clean-history-on-start" defaultValue="true"/>
    <!-- 单个日志文件的大小 -->
    <springProperty scope="context" name="maxFileSize" source="logging.logback.rollingpolicy.max-file-size"
                    defaultValue="10MB"/>
    <!-- 日志总文件最大值 -->
    <springProperty scope="context" name="totalSizeCap" source="logging.logback.rollingpolicy.total-size-cap"
                    defaultValue="50GB"/>
    <!-- 日志保留时长 (天) -->
    <springProperty scope="context" name="maxHistory" source="logging.logback.rollingpolicy.max-history"
                    defaultValue="30"/>
    <!-- 日志文件路径 -->
    <springProperty scope="context" name="path" source="logging.file.path"
                    defaultValue="./log/${springApplicationName}/${springProfilesActive}"/>
    <contextName>${springApplicationName}</contextName>
    <property name="PATTERN_FILE" value="%d{yyyy/MM/dd-HH:mm:ss} %-5level [%thread] %class{5}:%line>>%msg%n"/>
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${path}/%d{yyyy-MM-dd}/%i.log</fileNamePattern>
            <totalSizeCap>${totalSizeCap}</totalSizeCap>
            <maxHistory>${maxHistory}</maxHistory>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>${maxFileSize}</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
            <!-- 重启项目后删除日志 -->
            <cleanHistoryOnStart>${cleanHistoryOnStart}</cleanHistoryOnStart>
        </rollingPolicy>
        <encoder>
            <pattern>${PATTERN_FILE}</pattern>
        </encoder>
    </appender>
    <!--设置日志级别-->
    <root level="WARN">
        <appender-ref ref="FILE"/>
    </root>

</configuration>


第6步:测试日志输出

在Controller中编写测试代码:

import ch.qos.logback.classic.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/")
public class HomeController {
    private static final Logger logger = (Logger) LoggerFactory.getLogger(HomeController.class);
    @GetMapping("/")
    public String index() {
        logger.debug("【Debug】- Hello.");
        logger.info("【Info】- Hello.");
        logger.warn("【Warn】- Hello.");
        logger.error("【Error】- Hello.");
        return "index";
    }
}

1.测试开发环境

在application.yaml文件中,配置:

spring:
  profiles:
    active: dev

运行项目,访问对应的地址,即可看到控制台日志输出:

2.测试生产环境

在application.yaml文件中,配置:

spring:
  profiles:
    active: pro

 运行项目,访问对应的地址,即可看到对应目录下的日志输出:

这个日志存放路径,可以根据logback/pro.xml中fileNamePattern配置。 

第7步:关闭logback启动日志(可选)

使用logback启动的时候总是会出现很多启动日志,但是很多时候却完全不需要这些日志,此时就会想到关闭这些日志。

只需要按照如下在logback.xml里面增加一行配置即可关闭logback启动时的一堆日志。

<configuration debug="false">
    <statusListener class="ch.qos.logback.core.status.NopStatusListener" />
    ...
<configuration>

以上就是SpringBoot多环境下集成logback的配置指南的详细内容,更多关于SpringBoot集成logback的资料请关注脚本之家其它相关文章!

相关文章

  • java8中@Contended注解的使用

    java8中@Contended注解的使用

    本文主要介绍了java8中@Contended注解的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • SpringBoot项目使用 axis 调用webservice接口的实践记录

    SpringBoot项目使用 axis 调用webservice接口的实践记录

    这篇文章主要介绍了SpringBoot项目使用 axis 调用webservice接口,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • Spring AI集成DeepSeek实现流式输出的操作方法

    Spring AI集成DeepSeek实现流式输出的操作方法

    本文介绍了如何在SpringBoot中使用Sse(Server-SentEvents)技术实现流式输出,后端使用SpringMVC中的SseEmitter对象,前端使用EventSource对象监听SSE接口并展示数据流,通过这种方式可以提升用户体验,避免大模型响应速度慢的问题,感兴趣的朋友一起看看吧
    2025-03-03
  • java 中模拟UDP传输的发送端和接收端实例详解

    java 中模拟UDP传输的发送端和接收端实例详解

    这篇文章主要介绍了java 中模拟UDP传输的发送端和接收端实例详解的相关资料,需要的朋友可以参考下
    2017-03-03
  • Spring数据库多数据源路由配置过程图解

    Spring数据库多数据源路由配置过程图解

    这篇文章主要介绍了Spring数据库多数据源路由配置过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • java实现摄像头截图功能

    java实现摄像头截图功能

    这篇文章主要为大家详细介绍了java实现摄像头截图功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-10-10
  • springboot启动时如何获取端口和项目名

    springboot启动时如何获取端口和项目名

    这篇文章主要介绍了springboot启动时如何获取端口和项目名,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • java求解汉诺塔问题示例

    java求解汉诺塔问题示例

    汉诺塔问题的描述如下:有3根柱子A、B和C,在A上从上往下按照从小到大的顺序放着一些圆盘,以B为中介,把盘子全部移动到C上。移动过程中,要求任意盘子的下面要么没有盘子,要么只能有比它大的盘子。编程实现3阶汉诺塔的求解步骤
    2014-02-02
  • Java初学者之五子棋游戏实现教程

    Java初学者之五子棋游戏实现教程

    这篇文章主要为大家详细介绍了Java初学者之五子棋游戏实现教程,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • Java实现简单的学生教师管理系统

    Java实现简单的学生教师管理系统

    这篇文章主要为大家详细介绍了Java实现简单的学生教师管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02

最新评论