前言
市面上有很多日志库,log4j、log4j2,slf4j等,为什么选择用slf4j呢,原因如下
1.spring boot核心库集成了框架,不需要在pom.xml中在引入核心库
2.使用的人多
使用
spring boot中slf4j会有一些默认配置,在没有要求(比如自定义日志输出模板,自定义日志放置目录)的情况下,我们可以直接使用
@RestController public class Index { //通过LoggerFactory类,获取到日志类的实例对象 private final Logger log = LoggerFactory.getLogger(Index.class); //注意Logger和LoggerFactory类是处于org.slf4j命名空间下 @RequestMapping("login") public Object index() { log.info("info");//输出消息日志 log.warn("warning");//输出警告日志 log.error("error");//输出错误日志
return "end"; } }
上面的代码执行后,就可以看到idea的控制台内,会出现三条对应的日志消息。而在C:\Users\登录用户~1\AppData\Local\Temp\目录下也会生成对应的日志文件(名字是一堆hash字符)
配置日志自定义输出
如果我们想定义日志的输出格式和输出位置,那么就需要进行相应配置
配置日志文件输出路径
在application.yml中添加配置
spring:
......
logging: //与spring同级 file: name: logs/log.log //指定输出日志目录
配置日志输出格式
在application.yml中增加配置
spring: ...... logging: //与spring同级 # file: # name: logs/log.log //去除日志输出配置 config: classpath:log.config.xml //指定slf4j配置文件,我们可以在这里面配置日志输出目录,同一个库的配置尽量放在一块
在log.config.xml中配置
... @slf4j配置详解
使用@SLF4J注解
每次使用Logger,都需要通过LoggerFactory去获取Logger实例比较麻烦
private final Logger log = LoggerFactory.getLogger(当前类.class);
可以使用@SLF4J
@Slf4j //注解当前类 @RestControllerpublic class TestController { @RequestMapping("login")public String index(){ log.debug("可以直接调用log打印日志了"); return "testPrint"; } }
使用@SLF4J需要几个步骤
1.idea下载安装lombok插件,(2021版本后的idea一般都捆绑安装了,高版本的idea可以省略此步骤)
lombok简介:java自动生成代码的插件。它能提高开发效率,减少自己编写繁琐的代码,让代码看起来更整洁简略,比如getter、setter、equals以及construct等方法。其也有val、var这种自动判断变量类型的变量定义方式(类似javascript中的let、const)
lombok安装:https://www.cnblogs.com/sxdcgaq8080/p/7884477.html
lombok详解:https://blog.csdn.net/qq_28851503/article/details/80961759
2.pom.xml引入lombok的包
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency>
3.然后就可以愉快的使用@SLF4J注解了
@Slf4j //注解当前类 @RestController public class TestController { @RequestMapping("login") public String index(){ log.debug("可以直接调用log打印日志了"); return "testPrint"; } }