我们为啥要用日志?
最初我们开始接触 Java 的时候, 我们通常会使用 System.out.println() 将我们想要知道的信息打印到控制台.
但是, 如果在服务器上我们去运行我们的 Java 程序, 这个时候就凸显了日志对于一个系统来说的重要性, 查找异常信息, 分析系统运行情况等都需要用到日志.
为什么是 SLF4J?
默认情况下, Spring Boot 会用 SLF4J + Logback 来记录日志, 并用 INFO 级别输出到控制台.
SLF4J, 即简单日志门面 (Simple Logging Facade for Java), 它可以看做是一个接口框架, 并不提供具体的实现, 具体的实现由类似于 Log4j,Log4j2,Logback 等等这样的日志框架去完成.
我们为什么要在实际的应用中去使用 SLF4J 的 API 呢?
在阿里巴巴的开发手册上也给我们明确 [强制] 规定了:
而百度百科上也给出了相应的解释:
SLF4J 让你的代码独立于任何特定的日志记录 API, 可以让我们的程序更加的健壮, 不会让你因为不同日志的实现而导致的问题去分心.
使用 SLF4J 的另外一个理由就是, 它可以支持占位符:
- String name = "Vi";
- logger.debug("My Name is {}", name);
这段程序在运行时刻才会拿到 name. 这不仅缩减了代码中的许多字符串连接, 而且减少了创建 String 对象所需要的堆内存资源.
怎么使用 SLF4J?
如果我们在一个 Spring Boot 的程序中去使用 SLF4J, 我们不需要去引入其他的包, 因为我们引入的有关 spring-boot-starter 中就已经包含了有关 slf4j 的 jar 包. 我们只需要通过 LoggerFactory 去获取即可:
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- ...
- private static final Logger logger = LoggerFactory.getLogger(ResponseAop.class);
这里需要注意看我们选择的是不是 slf4j 包下的 Logger, 不要选错了哟.
配合 Lombok 使用 @Slf4j
首先在 pom.xml 中添加 Lombok 的依赖:
- <dependency>
- <groupId>org.projectlombok</groupId>
- <artifactId>lombok</artifactId>
- <optional>true</optional>
- </dependency>
然后打开 IDEA 的设置项, 在 Plugins 中查找:
注意安装插件后记得重启使其生效!
然后, 我们在项目中就可以这样去使用:
- @Slf4j
- public class Slf4JTest {
- public static void main(String[] args) {
- log.info("This is a Slf4jTest");
- }
- }
关于日志的配置
这里我就偷个懒, 因为网上一搜一大堆, 但是实际上你用的时候还是要根据自己的项目的情况进行使用的 (你可以关注我, 我会在后面的项目实战中去配置, 并给出源码).
这里需要注意一点: 默认情况下, Spring Boot 将日志输出到控制台, 不会写到日志文件. 如果要编写除控制台输出之外的日志文件, 则需在 application.YAML 中设置 logging.file 或 logging.path 属性. 但是这俩属性同时配置的时候, 只有 logging.file 生效!
公众号
您的推荐就是对我最大的支持!
来源: https://www.cnblogs.com/viyoung/p/10253482.html