【 <二> 丹方改良:Spring 时代的 JavaWeb】之 Spring Boot 中的日志管理:Logback 的集成

发布于:2025-03-25 ⋅ 阅读:(21) ⋅ 点赞:(0)

 <前文回顾>

点击此处查看 合集 https://blog.csdn.net/foyodesigner/category_12907601.html?fromshare=blogcolumn&sharetype=blogcolumn&sharerId=12907601&sharerefer=PC&sharesource=FoyoDesigner&sharefrom=from_link

<今日更新>

一、开篇整活儿

今儿个咱唠唠 Spring Boot 里头的日志管理。这玩意儿吧,说大不大,说小不小,整好了是锦上添花,整不好就是火上浇油。你要是刚入门,那可得悠着点儿,别一上来就整得自己“翻车”了。

二、Logback 是啥玩意儿?

Logback 是 Java 里头的一个日志框架,比 Log4j 还高级,性能更好,功能更全。Spring Boot 里头默认就集成了这玩意儿,用起来贼方便。

1. 基本用法

Logback 的配置文件是 logback.xml,你只要把这文件放到 src/main/resources 目录下,Spring Boot 就会自动加载。

XML Code

<configuration>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">

        <encoder>

            <pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%n</pattern>

        </encoder>

    </appender>

    <root level="info">

        <appender-ref ref="STDOUT" />

    </root>

</configuration>

这段代码里头,logback.xml 配置了一个控制台输出的日志格式,%d 是日期,%-5level 是日志级别,%logger{36} 是日志名称,%msg 是日志内容,%n 是换行。

2. 在代码中使用

你可以在代码里头用 Logger 对象来记录日志。

Java Code

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

public class MyService {

    private static final Logger logger = LoggerFactory.getLogger(MyService.class);

    public void doSomething() {

        logger.info("开始干活儿");

        // 一些业务逻辑

        logger.info("干完活儿了");

    }

}

这段代码里头,MyService 类里头用 Logger 对象记录了日志,info 方法用来记录普通信息。

三、Logback 的高级配置

Logback 的功能贼强大,你可以配置日志的输出格式、输出位置、日志级别啥的。

1. 输出到文件

你可以把日志输出到文件里头,方便以后查看。

XML Code

<configuration>

    <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>%d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%n</pattern>

        </encoder>

    </appender>

    <root level="info">

        <appender-ref ref="FILE" />

    </root>

</configuration>

这段代码里头,logback.xml 配置了一个文件输出的日志格式,logs/app.log 是日志文件的路径,logs/app.%d{yyyy-MM-dd}.log 是日志文件的滚动规则,maxHistory 是保留的日志文件数量。

2. 日志级别

你可以配置日志的级别,控制日志的输出。

XML Code

<configuration>

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

        <appender-ref ref="STDOUT" />

    </logger>

    <root level="info">

        <appender-ref ref="STDOUT" />

    </root>

</configuration>

这段代码里头,logback.xml 配置了 com.example.demo 包的日志级别是 debug,additivity="false" 表示不继承父级的日志配置。

3. 异步日志

你可以配置异步日志,提升性能。

XML Code

<configuration>

    <appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">

        <appender-ref ref="STDOUT" />

    </appender>

    <root level="info">

        <appender-ref ref="ASYNC" />

    </root>

</configuration>

这段代码里头,logback.xml 配置了一个异步日志输出,AsyncAppender 是异步日志的类。

四、自定义日志格式

你可以自定义日志的输出格式,满足不同的需求。

1. 自定义日志格式

XML Code

<configuration>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">

        <encoder>

            <pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level %logger{36} - %msg%n</pattern>

        </encoder>

    </appender>

    <root level="info">

        <appender-ref ref="STDOUT" />

    </root>

</configuration>

这段代码里头,logback.xml 配置了一个自定义的日志格式,%d 是日期,%-5level 是日志级别,%logger{36} 是日志名称,%msg 是日志内容,%n 是换行。

2. 自定义日志颜色

你可以给日志加上颜色,方便查看。

XML Code

<configuration>

    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">

        <encoder>

            <pattern>%clr(%d{yyyy-MM-dd HH:mm:ss}){faint} %clr(%-5level) %clr(%logger{36}){cyan} - %msg%n</pattern>

        </encoder>

    </appender>

    <root level="info">

        <appender-ref ref="STDOUT" />

    </root>

</configuration>

这段代码里头,logback.xml 配置了一个带颜色的日志格式,%clr 是颜色转换器,{faint} 是淡色,{cyan} 是青色。

五、Spring Boot 里头的日志坑点

1. 日志级别冲突

Spring Boot 里头,日志级别配置可能会冲突。你要是配置了 application.properties 里头的日志级别,那 logback.xml 里头的配置就不起作用了。

Properties Code

logging.level.com.example.demo=debug

这段代码里头,application.properties 配置了 com.example.demo 包的日志级别是 debug。

2. 日志文件路径

Spring Boot 里头,日志文件的路径可能会出问题。你要是配置了 application.properties 里头的日志文件路径,那 logback.xml 里头的配置就不起作用了。

Properties Code

logging.file.name=logs/app.log

这段代码里头,application.properties 配置了日志文件的路径是 logs/app.log。

3. 日志文件大小

Spring Boot 里头,日志文件的大小可能会出问题。你要是配置了 application.properties 里头的日志文件大小,那 logback.xml 里头的配置就不起作用了。

Properties Code

logging.file.max-size=10MB

这段代码里头,application.properties 配置了日志文件的最大大小是 10MB。

专有名词解释

  1. Logback:Java 里头的一个日志框架,比 Log4j 还高级,性能更好,功能更全。
  2. logback.xml:Logback 的配置文件,用来配置日志的输出格式、输出位置、日志级别啥的。
  3. Logger:Java 里头的一个日志对象,用来记录日志。
  4. appender:Logback 里头的一个组件,用来指定日志的输出位置。
  5. encoder:Logback 里头的一个组件,用来指定日志的输出格式。
  6. rollingPolicy:Logback 里头的一个组件,用来指定日志文件的滚动规则。
  7. AsyncAppender:Logback 里头的一个组件,用来实现异步日志输出。
  8. conversionRule:Logback 里头的一个组件,用来指定日志格式的转换规则。
  9. ColorConverter:Spring Boot 里头的一个组件,用来给日志加上颜色。


网站公告

今日签到

点亮在社区的每一天
去签到