https://blog.csdn.net/zalan01408980/article/details/79653386
上面链接是感觉写的很好的一个slf4j的日志总结。
下面说一下我自己对slf4j的理解:
一: 什么是slf4j:
Slf4j的全称是Simple Loging Facade For Java(Java简单日志门面),它仅仅是一个为Java程序提供日志输出的统一接口,并不是一个具体的日志实现方案,就比如JDBC一样,只是一种规则而已。所以单独的Slf4j是不能工作的,必须搭配其他具体的日志实现方案,比如apache的org.apache.log4j.Logger,jdk自带的java.util.logging.Logger以及logback等。目前最新的log4j以及logback已经兼容了slf4j的API,如果想要使用slf4j的话,只需要在pom.xml中引用log4j或者logback即可。
二:如何使用slf4j:
在java后台中使用logger的话参看上面链接即可。
不过在maven中可以使用注解@Slf4j;
1. 使用注解@Slf4j的话首先需要在idea中安装lombok插件。
2. pom.xml文件加入lombok的依赖
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.16</version><!--版本号自己选一个就行-->
</dependency>
3. spring-boot内部已经集成了slf4j,所以不需要再pom.xml中再次依赖slf4j,所以我们只要对slf4j做下简单的配置即可:
首先我们需要一个文件用来做日志相关的配置:
logback.xml:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 格式化输出:%date表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度 %msg:日志消息,%n是换行符-->
<property name="LOG_PATTERN" value="%date{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n" />
<!-- 定义日志存储的路径,不要配置相对路径 -->
<property name="FILE_PATH" value="E:/logs/demo.%d{yyyy-MM-dd}.%i.log" />
<!-- 控制台输出日志 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<!-- 按照上面配置的LOG_PATTERN来打印日志 -->
<pattern>${LOG_PATTERN}</pattern>
</encoder>
</appender>
<!--每天生成一个日志文件,保存15天的日志文件。rollingFile是用来切分文件的 -->
<appender name="FILE"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${FILE_PATH}</fileNamePattern>
<!-- keep 15 days' worth of history -->
<maxHistory>15</maxHistory>
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<!-- 日志文件的最大大小 -->
<maxFileSize>10MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<pattern>${LOG_PATTERN}</pattern>
</encoder>
</appender>
<!-- project default level -->
<logger name="src" level="INFO" />
<!-- 日志输出级别 常用的日志级别按照从高到低依次为:ERROR、WARN、INFO、DEBUG。 -->
<root level="INFO">
<appender-ref ref="CONSOLE" />
<appender-ref ref="FILE" />
</root>
</configuration>
然后在application中指定配置文件的位置:
# 配置日志级别
# 配置自定义的日志配置文件路径(相对路径)
logging:
config: src/main/java/com/example/demo/config/logback.xml
# level:
# com.example.demo.controller: debug
logging.level 用来指定具体的 Mapper 中日志的输出级别,上面的配置表示 com.example.demo.controller包下的所有 文件日志输出级别为 Trace。开发时设置成 trace 方便定位问题,在生产环境上,将这个日志级别再设置成 error 级别即可.
4. 配置完成后的使用:
使用@Slf4j注解
三: 日志文件的配值方式
1. 使用xml配置文件,并在yml文件中配置上日志配置文件的路径(参考二);
2. 使用yml文件配置:
pattern:
file: "my.log.%d{yyyy-MM-dd}.log"
console: "%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n"
path: "./logs"
file:
max-history: 30
max-size: 10MB
level:
root: INFO