问题是这样的,排除springboot 默认的logback 改成 使用slf4j 的时候,出现了报错,请教下是否@SpringBootApplication 注解上也需要排除
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<exclusions>
<exclusion>
<artifactId>spring-boot-starter-logging</artifactId>
<groupId>org.springframework.boot</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</dependency>
@Slf4j
@RestController
public class LogController {
@GetMapping("/")
public void test(){
log.info("hello world");
}
}
springboot 默认用的就是 slf4j+logback,slf4j 只是一个门面,一套接口,logback 是这套接口的一个实现。slf4j与logback的关系,就好像jdbc与mysql-driver.jar的关系,一个是标准,一个是实现。所以不用排除logback
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
slf4j只是日志门面,logback是实现,不需要排除
如果想使用@Slf4j注解需要添加
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.20</version>
</dependency>
日志框架的作用:是用来记录系统的一些行为的,可以通过日志来发现定位问题,在出现问题之后日志是好的一个帮手。
市面上的日志框架大概有这些:JUL、JCL、Jboss-logging、logback、log4j、log4j2、slf4j....等等。
SLF4j(Simple Logging Facade for Java) 是一个抽象的门面,需要实现。
Log4j JUL(java.util.logging) Log4j2 Logback都可以实现它。
上边选一个门面(抽象层)、下边来选一个实现;
日志门面: SLF4J;
日志实现:Logback, Log4j2;
SpringBoot选用的日志框架和实现为SLF4j和logback。
你截图和你问的问题是两件事儿
1、Slf4j 是日志库的统一规范接口,这个只是定义了接口,是没有实现的,它的实现有logback、slf4j-simple等;
2、你问的@SpringBootApplication注解上的@Slf4j 这个是lombok的实现,程序代码中需要引入lombok组件。
解决你截图错误的办法就是 logback 不用注释,如果还提示错误,就需要安装 lombok 组件,可以直接 https://projectlombok.org/downloads/lombok.jar 下载双击运行,重启IDE即可。
大家说的都很有道理,你的错误在于
可以发出这个类代码吗?