• SpringBoot 日志文件


     目录

    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. }

     

  • 相关阅读:
    数学建模之圈养湖羊的空间利用率
    spring.mvc.static-path-pattern和spring.resources.static-locations
    爆火的无人驾驶萝卜快跑,背后有哪些隐忧?
    UE5笔记【六】流明引擎Lumen简介;Lumen处理发光物体。
    基于ResNet-18的简单分类(新手,而且网络效果不咋滴,就是学个流程)
    C++ 多态 虚函数和纯虚函数
    挂站服务器什么意思?挂站服务器可以挂多少网站?
    【2024秋招】2023-10-9 同花顺后端笔试题
    git命令汇总
    电路积木(14423字)(10000字文章计划完成)
  • 原文地址:https://blog.csdn.net/m0_65190367/article/details/130898509