java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > SpringBoot集成logback

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

作者:清山博客

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

您可能感兴趣的文章:
阅读全文