Slf4J注解的使用方法

本篇文章基于SpringBoot,依赖需求和SpringFrame有所差距


添加依赖

因为springboot的starter相关配置已经配套了slf4j的相关文件,所以我们只需要配置lombok即可使用该注解。

<dependency>
	<groupId>org.projectlombok</groupId>
	<artifactId>lombok</artifactId>
	<version>1.18.36</version>
</dependency>

使用样例

日志的输出级别,常用的一共五种:trace, debug, info, warn, error

这五个级别从前到后依次递增。

下面是一个使用例子:

@Component
public class TestComponent{
  @GetMapping("/test")
  public void test(){
    log.debug("DEBUG is running...");
    log.info("INFO is running...");
    log.warn("WARN is running...");
  }
}

在这个例子中,并没有体现出级别的作用,如果我们需要只输出info级别以上的日志,那么我们需要进一步配置

级别配置

application.properties文件中,添加如下代码:

logging.level.root = INFO
logging.level.com.example = DEBUG
logging.level.com.example.Service = WARN

第一行代码用于指定全局的日志级别,第二行则指定com.example包的日志级别,第三行指定类的日志级别。

除了在application.properties文件中进行配置,我们也可以使用application.yml文件配置来代替前者,使用yml文件的结构性更强,使用起来更直观,但是如果不想要新建文件,那么只使用前者就够了。

application.yml文件中配置如下:

logging:
  level:
    root: info
    com.example: debug
    com.example.Service: warn

这样我们的级别就配置好了,值得注意的是,在SpringBoot程序运行过程中,框架本身会产生很多的DEBUG信息,如果不想要得到这些信息,最好只在指定的包中指定DEBUG或TRACE。

日志输出配置

在前面的情况下,日志只会在控制台进行输出,如果是在运维阶段,需要日志打印出来进行长期保存,那么则需要进一步的配置

首先在application.properties文件中添加如下:

logging.config=classpath:logback.xml

然后再在application.properties的同级目录下新建该文件logback.xml,文件内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="30 seconds">
    <!-- 定义日志输出路径 -->
    <property name="LOG_PATH" value="./logs/app-logs"/>
    <property name="LOG_FILE_NAME" value="app"/>
    <property name="LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n"/>

    <!-- 控制台输出 -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>${LOG_PATTERN}</pattern>
        </encoder>
    </appender>

    <!-- 文件输出(按时间+大小滚动) -->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${LOG_PATH}/${LOG_FILE_NAME}.log</file>
        <encoder>
            <pattern>${LOG_PATTERN}</pattern>
        </encoder>
        <!-- 滚动是指在原日志文件满足相应条件后,停止对其编写,转而新建一个日志文件进行编写 -->
        <!-- 滚动策略:按时间(天)和文件大小滚动 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            <!-- 滚动后的文件名格式 -->
            <fileNamePattern>${LOG_PATH}/${LOG_FILE_NAME}-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
            <!-- 单个文件最大 10MB -->
            <maxFileSize>10MB</maxFileSize>
            <!-- 保留 30 天的日志 -->
            <maxHistory>30</maxHistory>
            <!-- 同一天内最多生成 1 个文件 -->
            <totalSizeCap>100MB</totalSizeCap>
        </rollingPolicy>
    </appender>

    <!-- 根日志配置 -->
    <root level="INFO">
        <appender-ref ref="CONSOLE"/>
        <appender-ref ref="FILE"/>
    </root>

    <!-- 可选:指定某个包的日志级别 -->
    <logger name="com.example" level="DEBUG"/>
</configuration>

值得注意的是,本配置中使用的路径是相对路径,在我的机子上运行并无错误,而多数的其他博客中不推荐使用相对路径,其中缘由我不太懂,大家可以自行查询一下。

后话

如果觉得单一色彩的日志不够 炫酷 直观,那么可以在logback.xml文件中添加如下配置:

<!-- 彩色日志依赖的渲染类 -->
  <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
  <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
  <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
  <!-- 彩色日志格式 -->
  <property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>

通过配置的彩色渲染类,可以实现日志文字的染色。

posted @ 2025-03-15 12:20  报废之人  阅读(399)  评论(0)    收藏  举报