SpringBoot 日志文件

 目录

1. 日志怎么使用?

2. 自定义日志打印:

2.1 得到日志对象:

 获取日志对象语法

2.2 获取打印日志

 如何理解日志级别

设置日志级别

3. 日志持久化

4. 使用 Lombok 简化日志输出



        此处所说的日志和我们日常说的日志有何不同呢?

        这里所说的日志是程序的重要组成部分,对于程序员而言,在日常开发中日志是帮助我们发现错误的途径。日志除了发现问题和定位问题外,还可以记录用户登录情况、记录日否存在恶意破解、更程序段的执行情况,为程序的维护与升级服务。

1. 日志怎么使用?

        日志可不是在控制台输出一段 System.out.println() 的内容,而是通过配置与定义让程序自动生成记录信息;

         像下面这些内容就是 SpringBoot 在控制台输出的日志,它记录了程序相关信息,但每次启动程序日志都会改变,下面的任务就是学会如何定义日志,让日志永久保存。

SpringBoot 日志文件_第1张图片

2. 自定义日志打印:

        日志打印分为两步:

  1. 得到日志对象;
  2. 使用日志相关语法输出内容;

2.1 得到日志对象:

        先来了解下面这段日志框架的进化史,java 日志从最早期的 Log4j 到现在的Log4j 1/2,它们都提供了日志操作的种种方法,本篇对日志的介绍都是借助 SLF4J 展开的。

SpringBoot 日志文件_第2张图片

 获取日志对象语法:

private static final Logger logger = LoggerFactory.getLogger();
  • LoggerFactory:是日志工厂,可以调用方法,通过日志工厂将每个类型传进去,就知道日志的归属类;

 本篇使用 SLF4J 的日志,所以导包时要注意看清楚:

SpringBoot 日志文件_第3张图片

 

2.2 获取打印日志

         日志打印有基本分为六类:

  1. trace:微量,少许的意思,级别最低;
  2. debug:打印调试时的关键信息;
  3. info:(默认级别)打印普通信息;
  4. warn:警告,需要注意的问题,不影响使用;
  5. error:错误信息,级别较高;
  6. fatal:致命错误,因为代码异常导致的执行中断事件;但这个级别的日志是我们不能手动打印的;

 如何理解日志级别:

        某些书上介绍的是从 trace 到 fatal 级别越来越低,但主流认为是从 trace 到 fatal 级别是越来越高的;级别越高,可以看到的日志信息就越多,反之越少。

        只有级别高于设置的日志权限,才能输出对应信息的日志。例如设置了日志级别为warn,那么就只能输出 warn、error、fatal 的日志了。

@Controller
@ResponseBody
public class GetLog01 {
    // 1. 得到日志对象
    private static final Logger logger = LoggerFactory.getLogger(GetLog01.class);

    // 2. 打印日志
    @RequestMapping("/getLogs")
    public void printLogs() {
        logger.trace("trace");
        logger.debug("debug");
        logger.info("info");
        logger.warn("warn");
        logger.error("error");
    }
}

 默认权限是 info,所以输出日志:info、warn、error。

SpringBoot 日志文件_第4张图片

 

设置日志级别:

        设置日志级别时,在 yml 文件中:

        logging:

            level:

        这是固定语法,接着可以根据自己要设置的目录,设置需要的日志权限;

#配置日志文件
logging:
  level:
    root: error
    com:
      example:
        demo:
          controller: trace

         直接设置 root 目录的日志权限为 error,controller 目录下的日志权限为 trace,那么启动后当然看不到多余信息了,因为 trace 权限太低。

SpringBoot 日志文件_第5张图片

 

3. 日志持久化:

语法:在 D 盘下的 JavaEE\java-ee\spring-log-demo\mylogs 包下自动创建一个 mylog.log 文件;

logging:
  file:
    name: D:\JavaEE\java-ee\spring-log-demo\mylogs\mylog.log

 直接设置 name 的方式,是指定路径 + 设置名称;

也可以只指定路径:name 换成 path,这样最终自动生成的是默认日志文件;

SpringBoot 日志文件_第6张图片

SpringBoot 日志文件_第7张图片

 


4. 使用 Lombok 简化日志输出:

        上面每次获取日志对象时,都要借助 LoggerFactory.getLogger(),传入类名或类对象,但是如果有 Lombok,那么只需要在类上添加注解 @Slf4j,启动类后就可以直接自动根据注解获取到日志对象,再借助方法打印日志即可。

@RestController
@Slf4j
public class GetLog02 {
    @RequestMapping("/Slf4j")
    public void printLogs() {
        log.trace("Slf4j - trace");
        log.debug("Slf4j - debug");
        log.info("Slf4j - info");
        log.error("Slf4j - error");
    }
}

 

你可能感兴趣的:(Java知识分享,java,开发语言,slf4j,spring,boot,面试)