文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

【Java】Spring Boot 日志文件

2023-09-23 13:07

关注

文章目录

SpringBoot日志文件

1. 日志有什么用

日志是程序的重要组成部分,想象一下,如果程序报错了,不让你打开控制台看日志,那么你能找到报错的原因吗。

日志对于我们来说,最主要的用途就是排除和定位问题。除了发现和定位问题之外,我们还可以通过日志实现以下功能:

2. 日志怎么用

Spring Boot项目在启动的时候默认就会有日志的输出,如下图:

在这里插入图片描述

通过上述信息我们可以发现:

3. 自定义日志打印

开发者自定义打印日志的实现步骤:

  1. 在程序中得到日志
  2. 使用日志对象的相关语法输出要打印的内容

3.1 在程序中得到日志对象

private static final Logger log = LoggerFactory.getLogger(UserController.class);

日志工厂需要将每个类的类型传进去,这样我们才能知道日志的归属类,才能更方便更直观的定位到问题

注意:logger对象属于org.slf4j包下的,不要导错了
在这里插入图片描述

3.2 使用日志对象打印日志

日志对象的打印方法有很多种,我们可以使用info方法来输出日志,

@Controller@ResponseBodypublic class UserController {    private static final Logger log = LoggerFactory.getLogger(UserController.class);    @RequestMapping("/sayhi")    public void sayHi() {        log.trace("trace");        log.debug("debug");        log.info("info");        log.warn("warn");        log.error("error");    }}

在这里插入图片描述

4. 日志级别

4.1 日志级别有什么用?

4.2 日志级别的分类与使用

日志级别分为:

日志级别的顺序:
在这里插入图片描述

越往上,接收到的信息就越少,如设置了warn就只能接收到warn及其上面的级别

日志级别设置

logging:  level:    root: error

默认日志输出级别

清除掉配置文件当中的日志设置,观察控制台输出的日志级别

得到结论,日志输出级别默认是info

当存在局部日志级别和全局日志级别设置,那么当访问局部日志时,使用的是局部日志级别。也就是局部日志优先级高于全局日志的优先级

5. 日志持久化

以上的日志都是输出在控制台上,然而生产环境上咱们需要将日志保存下来,以便出现问题之后追溯问题,把日志保存下来的过程叫做持久化

想要将日至持久化,只需要在配置文件中指定日志的存储目录或者是指定日志保存文件名,Spring Boot就会将控制台的日志写到相应的目录或文件下

配置日志文件的保存路径:

logging:  file:    path: D:\rizhi

保存的路径,当中包含转义字符方面的设置我们可以使用这个/来作为分割符。

如果坚持使用Windows下的分割符,我们需要使用\转义字符来转义一下

配置日志文件的文件名:

logging:  file:    name: D:/rizhi/logger/spring.log

6. 更简单的日志输出–lombok

每次使用LoggerFactory.getLogger很繁琐,且每个类都添加一遍,也很麻烦。这里的lombok是一种更好的日志输出方式

  1. 添加lombok框架支持
  2. 使用@slf4j注解输出日志

6.1 添加 lombok 依赖

首先要安装一个插件:在这里插入图片描述

然后再pom.xml页面右键、在这里插入图片描述在这里插入图片描述
在这里插入图片描述

最后重新添加依赖就可以了
在这里插入图片描述

6.2 输出日志

使用@Slf4j注解,在程序中使用log对象即可输入日志并且只能使用log对象才能输出,这是lombok提供的对象名

6.3 lombok原理解释

lombok 能够打印⽇志的密码就在 target ⽬录⾥⾯,target 为项⽬最终执⾏的代码,查看 target ⽬录我们可以发现:

在这里插入图片描述

这里的@Slf4j注解变成了一个对象。

下面是java程序的运行原理:

在这里插入图片描述

6.4 lombok更多注解说明

基本注解

注解作用
@Getter自动添加get方法
@Setter自动添加set方法
@ToString自动添加toString方法
@EqualsAndHashCode自动添加equals和hasCode方法
@NoArgsConstructor自动添加无参构造方法
@AllArgsConstructor自动添加全属性构造方法,顺序按照属性的定义顺序
@NonNull属性不能为null
@RequiredArgsConstructor自动添加必须属性的构造方法,final + @NonNull的属性为需

组合注解:

注解作用
@Data@Getter+@Setter+EqualsAndHashCode+@RequiredArgsConstructor+@NoArgsConstructor

日志注解

注解作用
@Slf4j添加一个名为log的对象

7. 总结

日志是程序员中的重要组成部分,使用日志可以快速的发现和定位问题,Spring Boot提供了日志框架,默认情况下使用的是info日志级别将日志输出到控制台的。我们可以通过lombok提供的@Slf4j注解和log对象快速的打印自定义日志,日志包含了6个级别:

日志级别依次提升,而日志级别越高,收到的日志信息也就越少,我们可以通过配置日志的保存域名或保存目录来将日志永久的保存下来

来源地址:https://blog.csdn.net/qq_63474430/article/details/129287107

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯