基本概念
日志文件记录了程序的报错信息,执行时间,用户的登录状态,操作时间等等
 通过日志,我们可以轻松的找到程序的问题,得到程序的相关信息
 
 springBoot启动时控制台打印的这些,就是程序的日志
创建日志
首先创建日志对象
private static final Logger logger = LoggerFactory.getLogger(类名.class);
注意:Logger是在slf4j包下
 SLF4J使用的是门面模式,也就是说我们调用SLF4J的方法,SLF4J会帮我们取调用log底层的方法
使用类对象的下面几种不同的方法,就可以打印不同种类的日志
logger.trace("this is trace");
logger.debug("this is debug");
logger.info("this is info");
logger.warn("this is warn");
logger.error("this is error");
例如,创建一个StudentController类
@Controller
@ResponseBody //表示当前类返回的是数据而不是页面
@RequestMapping("/user")
public class UserController {
    //得到日志对象
    private static final Logger logger = LoggerFactory.getLogger(UserController.class);
    @RequestMapping("/hi")
    public String sayHi(){
        logger.trace("this is trace");
        logger.debug("this is debug");
        logger.info("this is info");
        logger.warn("this is warn");
        logger.error("this is error");
        return "Hi,SpringBoot";
    }
}
在浏览器中访问http://127.0.0.1:8080/user/hi后,控制台就会出现相关日志
 
 详细含义如下:
 
 其中,我们调用的logger的不同的方法就对应了日志的不同级别,具体如下
日志级别
- trace: 微量
- debug:需要调试时,可以打印关键信息
- info:普通的打印信息
- warn:警告,不影响使用,但需要注意的信息
- error:错误,级别较高的错误信息
- fatal:致命,代码异常导致程序退出
从上到下,日志的级别越来越高,打印的信息越来越严重
可以在配置文件中设置日志级别,例如设置warn,就只会打印warn以上级别的日志了:warn,error,fatal
默认的级别是info
 配置文件:
logging:
  level:
    root: warn
root代表所有文件都设置为warn级别
可以看到,打印的信息只剩下这些了
 
 并且,可以根据不同的包设置不同的日志级别
logging:
  level:
    root: error
    com:
      example:
        controller: trace
        service: debug
日志持久化
在生产环境上是没有控制台的,因此需要将日志保存下来,也就是日志持久化
 在配置文件中加上保存路径
logging:
	file:
		path: 保存路径
或者使用路径加保存文件名:
logging:
	file:
		name: 保存名称
例如:
logging:
  file:
    name: /Users/lixiao/Desktop/SpringBoot-log.log

 
使用lombok进行日志输出
之前的博客:Spring——Bean的作用域和生命周期,介绍过lombok的用途,接下来介绍如何使用lombok更简单的进行日志的输出
引入依赖
在之前博客的springboot项目的创建时,就选择了lombok依赖
<dependency>
	<groupId>org.projectlombok</groupId>
	<artifactId>lombok</artifactId>
	<optional>true</optional>
</dependency>
如果springboot没有添加lombok,可以下载这个插件
 
 之后,在pom文件中右键,点击generate
 
 使用edit starter
 
 就可以像创建springboot一样,引入我们需要的依赖了
 
使用lombok
直接在类名上添加@Slf4j注解,即可使用log对象
例如:
@Controller
@ResponseBody
@RequestMapping("/article")
@Slf4j
public class ArticleController {
    @RequestMapping("/hi")
    public String sayHi(){
        log.error("test slf4j");
        return  "hi article controller";
    }
}
也就是说,@Slf4j代替了创建logger对象的过程
 也就是这一步
private static final Logger logger = LoggerFactory.getLogger(ArticleController.class);
lombok的原理在于,肉眼上使用注解替代了创建日志对象的代码,而事实上底层字节码文件中,还是需要创建日志对象
可以查看target目录中的ArticleController
 












![String类 [上]](https://img-blog.csdnimg.cn/b8b268ef999044a4b09a861ccce2309a.png)

![[计算机操作系统(慕课版)]第二章 进程的描述与控制(学习笔记)](https://img-blog.csdnimg.cn/e5b8c57be2a9443aa7d09b9562da1e03.png)




