当前位置:   article > 正文

SpringBoot 日志文件_springboot打印debug日志

springboot打印debug日志

 目录

1. 日志怎么使用?

2. 自定义日志打印:

2.1 得到日志对象:

 获取日志对象语法

2.2 获取打印日志

 如何理解日志级别

设置日志级别

3. 日志持久化

4. 使用 Lombok 简化日志输出



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

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

1. 日志怎么使用?

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

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

2. 自定义日志打印:

        日志打印分为两步:

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

2.1 得到日志对象:

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

 获取日志对象语法:

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

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

 

2.2 获取打印日志

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

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

 如何理解日志级别:

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

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

  1. @Controller
  2. @ResponseBody
  3. public class GetLog01 {
  4. // 1. 得到日志对象
  5. private static final Logger logger = LoggerFactory.getLogger(GetLog01.class);
  6. // 2. 打印日志
  7. @RequestMapping("/getLogs")
  8. public void printLogs() {
  9. logger.trace("trace");
  10. logger.debug("debug");
  11. logger.info("info");
  12. logger.warn("warn");
  13. logger.error("error");
  14. }
  15. }

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

 

设置日志级别:

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

        logging:

            level:

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

  1. #配置日志文件
  2. logging:
  3. level:
  4. root: error
  5. com:
  6. example:
  7. demo:
  8. controller: trace

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

 

3. 日志持久化:

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

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

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

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

 


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

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

  1. @RestController
  2. @Slf4j
  3. public class GetLog02 {
  4. @RequestMapping("/Slf4j")
  5. public void printLogs() {
  6. log.trace("Slf4j - trace");
  7. log.debug("Slf4j - debug");
  8. log.info("Slf4j - info");
  9. log.error("Slf4j - error");
  10. }
  11. }

 

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号