Spring Boot日志文件(一)https://developer.aliyun.com/article/1393169
Ⅳ、System.out.println() VS 日志🍓
- 灵活性:使用日志框架可以方便地控制日志的输出级别,从而在不同环境中灵活地开启或关闭日志输出。而使用System.out.println()则需要手动添加或删除代码。
- 可配置性:日志框架可以通过配置文件来设置日志的输出格式、输出位置等信息,而System.out.println()则只能将日志输出到控制台。
- 性能优化:日志框架会对日志进行缓冲和异步处理,以提高程序的性能。而System.out.println()会直接将日志输出到控制台,可能会对程序的性能造成一定的影响。
- 可扩展性:使用日志框架可以方便地扩展和替换日志实现,例如切换到其他日志框架或自定义日志输出方式。而使用System.out.println()则需要手动修改代码。
- System.out.println() 不能被持久化(可接着看后面便知晓了)。
3、日志持久化🍉
以上的日志都是输出在控制台上的,然而在生产环境上咱们需要将日志保存下来,以便出现问题之后追溯问题,把日志保存下来的过程就叫做持久化。
想要将日志进行持久化,只需要在配置文件中指定日志的存储目录或者是指定日志保存文件名之后, Spring Boot 就会将控制台的日志写到相应的目录或文件下了。
Ⅰ、配置日志文件的保存路径:🍓
路径:🍒
#开发模式 #设置默认端口号 server: port: 7777 #设置默认日志等级 logging: level: root: error com: example: springbootdemo: info # 设置⽇志⽂件的⽬录 file: path: C:\\logs
在C盘创建应该logs文件夹:
路径+文件名: 🍒
我们可以自己定义.log的文件名:
# 设置⽇志⽂件的⽂件名 logging: file: name: C:\\logs\\spring-1.log
文件名: 🍒
#开发模式 #设置默认端口号 server: port: 7777 #设置默认日志等级 logging: level: root: error com: example: springbootdemo: info # 设置⽇志⽂件的⽬录 file: name: spring-1.log
如果直接指点文件名,那它就会直接在项目文件下直接生成.log文件:
Ⅱ、进行日志持久化 🍓
@Controller//当前类为控制器 @ResponseBody//返回的是数据,而非页面 public class UserController { private static final Logger logger= LoggerFactory.getLogger(UserController.class); @RequestMapping("Hi") public String sayHi(){ //写日志 // 2.使⽤⽇志打印⽇志 logger.trace("我是trace"); logger.debug("我是debug"); logger.info("我是info"); logger.warn("我是warn"); logger.error("我是error"); System.out.println("我是System。"); return "Hi,Spring Boot"; } }
运行代码:
打开控制台:
打开logs:
打开这spring.log:
可以发现这和控制台打印的一模一样。但是没有打印 System.out.println(),这是因为日志的持久化只会保存日志信息,其他信息是不会去保存的。
Ⅲ、日志是追加or覆盖?🍓
如果我们重新运行代码,这个spring.log里面的内容是被覆盖还是被追加呢?
现在我们重新运行代码,打开spring.log看看:
可以看到日志的内容是追加的,所以不用担心日志会被覆盖或者消失,但是如果一直把它放在一个.log文件里面,那它越来越大,这怎么办啊?这时候就应该去查看一下官方文档:
可以看到,日志持久化文件最大为10M,当超过10M是它会重新创建一个新的持久化文件。还有其他持久化设置,感兴趣的可以去了解一下。
三、更简单的日志输出—lombok🍭
每次都使用 LoggerFactory.getLogger(xxx.class) 很繁琐,且每个类都添加⼀遍,也很麻烦,这里讲⼀ 种更好用的日志输出方式,使用 lombok 来更简单的输出。
- 添加 lombok 框架支持。
- 使⽤ @slf4j 注解输出日志
1、添加 lombok 依赖🍉
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.20</version> <optional>true</optional> </dependency>
但是我们在创建Spring Boot时就已经导入了Lombok框架了:
pom.xml:
Ⅰ、旧项目添加新依赖框架 🍓
安装EditStarters:
然后在pom.xml里面右键选择 Generate
选择Edit Starters
点击OK
添加需要添加的依赖:
添加完成之后,重新reload就行了。
2、输出日志🍉
package com.example.springbootdemo; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @Controller//当前类为控制器 @ResponseBody//返回的是数据,而非页面 @Slf4j public class ArticleController { @RequestMapping("art") public String sayHi(){ //写日志 // 2.使⽤⽇志打印⽇志 log.trace("我是trace"); log.debug("我是debug"); log.info("我是info"); log.warn("我是warn"); log.error("我是error"); return "Hi,Article"; } }
注意:使用 @Slf4j 注解,在程序中使用 log 对象即可输入日志,并且只能用 log 对象才能输出这是 lombok 提供的对象名
控制台打印:
3、lombok原理解释🍉
lombok 能够打印日志的密码就在 target 目录里面,target 为项目最终执行的代码,查看 target 目录。如下:
自己所写的代码:
在target目录中,您可以找到编译后的项目代码
可以看到lombok会直接给你生成注释对应的代码 ,这就特别省事了。
Java 程序的运行原理
Lombok 的作⽤如下图所示:
4、lombok 更多注解说明🍉
基本注解
组合注解
⽇志注解