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}}"/>
通过配置的彩色渲染类,可以实现日志文字的染色。

浙公网安备 33010602011771号