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的资料请关注脚本之家其它相关文章!

相关文章

  • SpringBoot居然有44种应用启动器,你都知道吗

    SpringBoot居然有44种应用启动器,你都知道吗

    很多人都不知道SpringBoot应用启动器竟然有44个,本文就一起来介绍一下,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2021-01-01
  • 手把手带你用java搞定青蛙跳台阶

    手把手带你用java搞定青蛙跳台阶

    这篇文章主要给大家介绍了关于Java青蛙跳台阶问题的解决思路与代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-08-08
  • springboot连接redis并动态切换database的实现方法

    springboot连接redis并动态切换database的实现方法

    这篇文章主要介绍了springboot连接redis并动态切换database,本文主为通过修改ConnectionFactory从而达到动态切换database的效果,结合示例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-03-03
  • Java实现JDBC连接数据库简单案例

    Java实现JDBC连接数据库简单案例

    这篇文章主要介绍了Java实现JDBC连接数据库简单案例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • JavaWeb实现用户登录与注册功能

    JavaWeb实现用户登录与注册功能

    这篇文章主要为大家详细介绍了JavaWeb实现用户登录与注册功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • Java编程redisson实现分布式锁代码示例

    Java编程redisson实现分布式锁代码示例

    这篇文章主要介绍了Java编程redisson实现分布式锁代码示例,小编觉得还是比较不错的,这里给大家分享下,供需要的朋友参考。
    2017-10-10
  • Java利用遗传算法求解最短路径问题

    Java利用遗传算法求解最短路径问题

    遗传算法(Genetic Algorithm,GA)最早是由美国的John holland于20世纪70年代提出,该算法是根据大自然中生物体进化规律而设计提出的。本文将利用遗传算法求解最短路径问题,需要的可以参考一下
    2022-06-06
  • Java异步非阻塞编程的几种方式总结

    Java异步非阻塞编程的几种方式总结

    这篇文章主要介绍了Java异步非阻塞编程的几种方式总结,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • Java操作文件路径正反斜杠问题解决

    Java操作文件路径正反斜杠问题解决

    最近在实现文件上传时,windows与linux系统出现的问题,两个系统中操作文件使用"\","/"导致IOException,本文主要介绍了Java操作文件路径正反斜杠问题解决,感兴趣的可以了解一下啊
    2024-01-01
  • JAVA中compareTo方法的使用小结

    JAVA中compareTo方法的使用小结

    compareTo方法的目的是用来比较两个对象的大小的,本文主要介绍了JAVA中compareTo方法的使用小结,具有一定的参考价值,感兴趣的可以了解一下
    2024-07-07

最新评论