Logback 日志框架使用

本文详细介绍了如何在SpringBoot项目中引入和配置logback日志框架,包括依赖管理、配置文件组织、不同环境的日志级别设置,以及参数化日志的使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

依赖引入

配置文件

日志级别

参数化日志


该篇文章主要介绍了logback日志框架的使用。

引入依赖

  • logback-core
  • logback-classic
  • slf4j-api
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-core</artifactId>
            <version>1.1.7</version>
        </dependency>

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

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.25</version>
        </dependency>

配置文件

关于配置文件的命名,官方建议:如果可能,我们建议您在日志配置中使用-spring变量(例如,logback-spring.xml而不是logback.xml),按照指定的规则组织配置文件名,并放在resources目录下,就能自动被SpringBoot加载。

<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/defaults.xml" />
    <!-- spring admin配置 -->
    <jmxConfigurator />
    <springProperty scope="context" name="appName" source="spring.application.name" />

    <!-- 定义日志文件 输入位置 -->
    <property name="logDir" value="./logs/${appName}" />
    <!-- 日志文件保留天数 -->
    <property name="maxHistory" value="60" />
    <!-- 日志文件大小 -->
    <property name="maxFileSize" value="100MB" />
    <!-- 日志文件总容量 -->
    <property name="totalSizeCap" value="20GB" />
    <!-- 输出格式:时间 线程 日志级别 类名+代码行数 输出内容  -->
    <property name="logPattern" value="[%date{yyyy-MM-dd HH:mm:ss}] [%thread] [%-5level] [%logger:%line] --%mdc{client} %msg%n" />

    <!-- <appender>: 是<configuration>的子节点,是负责写日志的组件。 <appender> 有两个必要属性name和class。name指定appender名称,class指定appender的全限定名。 -->
    <!--输出到控制台 -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <layout class="ch.qos.logback.classic.PatternLayout">
            <pattern>${logPattern}</pattern>
        </layout>
    </appender>

    <!-- 标准输出到文件 -->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <append>true</append>
        <encoder>
            <pattern>${logPattern}</pattern>
            <!-- 设置字符集 -->
            <charset>UTF-8</charset>
        </encoder>
        <!-- 基于大小和时间滚动生成日志文件 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!--日志输出位置 可相对、和绝对路径 -->
            <fileNamePattern>${logDir}/%d{yyyy-MM-dd}/log-%i.log</fileNamePattern>
            <!-- 日志文件大小 -->
            <maxFileSize>${maxFileSize}</maxFileSize>
            <!--日志文件保留天数 -->
            <maxHistory>${maxHistory}</maxHistory>
            <!-- 日志文件总容量,例如设置为3GB,到了这个值,就会删除旧的日志 -->
            <totalSizeCap>${totalSizeCap}</totalSizeCap>
        </rollingPolicy>
    </appender>


    <!-- 生产环境 -->
    <springProfile name="prod" level="info">
        <root level="info">
            <appender-ref ref="CONSOLE" />
            <appender-ref ref="FILE" />
        </root>
        <!-- 设置某一个包或者具体的某一个类的日志打印级别、以及指定<appender> -->
        <logger name="com.boot" additivity="false">
            <level value="DEBUG" />
            <appender-ref ref="CONSOLE" />
            <appender-ref ref="FILE" />
        </logger>
    </springProfile>

    <!-- 准生产环境 -->
    <springProfile name="sim" level="info">
        <root level="info">
            <appender-ref ref="CONSOLE" />
            <appender-ref ref="FILE" />
        </root>
    </springProfile>

    <!--uat 环境 -->
    <springProfile name="uat" level="info">
        <root level="info">
            <appender-ref ref="CONSOLE" />
            <appender-ref ref="FILE" />
        </root>
    </springProfile>

    <!--sit 环境 -->
    <springProfile name="sit" level="info">
        <root level="info">
            <appender-ref ref="CONSOLE" />
            <appender-ref ref="FILE" />
        </root>
    </springProfile>

    <!--dev 环境 -->
    <springProfile name="dev" level="info">
        <root level="info">
            <appender-ref ref="CONSOLE" />
            <appender-ref ref="FILE" />
        </root>
    </springProfile>

    <!--local 环境 -->
    <springProfile name="local" level="info">
        <root level="info">
            <appender-ref ref="CONSOLE" />
            <appender-ref ref="FILE" />
        </root>
    </springProfile>
</configuration>

日志级别

Logger的优先级由低到高排序为:TRACE < DEBUG < INFO < WARN < ERROR

打印日志时,如果日志记录请求的级别高于或等于Logger的级别才能打印

参数化日志

使用 {} 占位符记录变量进行日志打印,相较于用“+”进行字符串拼接,能够提高服务整体性能。

@Service
public class UserService {
    private static final Logger logger = LoggerFactory.getLogger(UserService.class);
 
    public void test(){
        logger.debug("The new entry is " + entry);
        logger.debug("The entry is {}", entry);
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值