欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 幼教 > SpringBoot 日志

SpringBoot 日志

2024/10/24 13:27:02 来源:https://blog.csdn.net/m0_74859835/article/details/140843258  浏览:    关键词:SpringBoot 日志

目录

一,日志概述

二,SpringBoot 日志

2.1 日志样式

2.2 打印日志

2.3 日志级别

2.4 日志配置

配置打印日志级别

日志持久化

日志文件分割

三, @Slf4j 注解


一,日志概述

日志对于我们来说并不陌生,在刚开始学习Java的时候,通常会使用System.out.print来打印日志发现和定位问题,或者根据日志来分析程序的运行过程。但是随着项目越来越复杂,我们对日志的打印也有了更高的要求:

  • 日志可以记录系统或应用程序在运行过程中的各种事件,包括错误、警告、异常信息等。当系统出现问题时,日志成为首要的问题诊断工具,帮助开发者快速定位问题原因,从而采取相应的解决措施。
  • 日志可以记录系统或应用的关键安全事件,如用户登录、权限变更、敏感操作等。这些记录对于安全审计至关重要,可以帮助组织追踪潜在的安全威胁,及时采取措施防止数据泄露或其他安全问题。
  • 日志还可以记录系统的版本变更信息,包括代码更新、配置修改等。这些信息对于版本控制和变更管理至关重要,可以帮助开发者追踪系统状态的变化,确保变更的准确性和可追溯性。
  • .........

所以我们需要使用一些专门的日志框架,下面我们就来介绍一下在SpringBoot中如何快速打印日志。

二,SpringBoot 日志

2.1 日志样式

我们先来观察一下系统打印的日志:

2.2 打印日志

想要打印出上述类型的日志,我们需要获取日志对象中获取⽇志对象中获取⽇志对象:

@RestController
@RequestMapping("/demo4")
public class demo4 {//使用日志工厂获取日志对象//getLogger()的参数是当前的类对象private static Logger logger = LoggerFactory.getLogger(demo4.class);@RequestMapping("/logger")public String printLog(){logger.info("这是一个日志");return "打印日志";}
}

注:Logger 对象是 org.slf4j 包下的,注意不要导错包!!!

2.3 日志级别

日志级别从高到低依次为:fatal,error,warn,info,debug,trace

  • FATAL:致命信息,表示需要立即被处理的系统级错误
  • ERROR:错误信息,级别较高的错误日志信息,但任然不系统的继续运行
  • WARN:警告信息,不影响使用,但是需要注意的问题
  • INFO:普通信息,用于记录应用程序正常运行时的一些歇息
  • DEBUG:调试信息,需要调试时打印的关键信息打印
  • TRACE:追踪信息,比DEBUG更细粒度的信息事件(除非有特殊用意,否则使用DEBUG替代)

针对不同的级别,Logger对象提供了不同的方法来输出日志:

@RestController
@RequestMapping("/demo4")
public class demo4 {private static Logger logger = LoggerFactory.getLogger(demo4.class);@RequestMapping("/logger")public String printLog(){//没有fatal方法,因为一般遇到这种问题,程序会直接崩溃,不需要提醒也知道出错了logger.error("error级别日志");logger.warn("warn级别日志");logger.info("info级别日志");logger.debug("debug级别日志");logger.trace("trace级别日志");return "打印日志";}
}

观察控制台的结果,可以发现只有info级别以上的日志,这与日志的配置有关,日志的输出级别默认是 info 级别,所以只会大于等于info级别的日志,即 info,warn,error

2.4 日志配置

配置打印日志级别

logging:level:com:example:javaeespringioc:demos: traceroot: info

日志持久化

日志持久化有两种方式:1.配置日志文件名 2.配置存储目录

# 配置日志文件名
logging:file:name: logger/springboot.log

# 配置日志文件目录
# 该方式只能设置路径,文件名称是固定的spring.log
logging:file:path: logger1/springboot.log

注:如果两个同时使用,那么以logging.file.name为准!!!

日志文件分割

logging.logback.rollingpolicy.file-name-pattern:配置日志分割后的文件格式;logging.logback.rollingpolicy.max-file-size:日志文件超过这个大小就自动分割

logging:file:path: logger1/springboot.loglogback:rollingpolicy:max-file-size: 1KBfile-name-pattern: ${LOG_FILE}.%d{yyyy-MM-dd}.%i

三, @Slf4j 注解

每次使用private static Logger logger = LoggerFactory.getLogger(...)方法很繁琐,且在每个类中创建时处理参数不同,其他都一样,所以可以使用 lombok 框架,它为我们提供了 @Slf4j 注解。

在.xml文件中添加 lombok 依赖

<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional>
</dependency>

使用 @Slf4j 注解

@Slf4j
@RestController
@RequestMapping("/demo4")
public class demo4 {@RequestMapping("/logger")public String printLog(){log.error("error级别日志");log.warn("warn级别日志");log.info("info级别日志");return "打印日志";}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com