【Java】Spring Boot 日志文件

这篇具有很好参考价值的文章主要介绍了【Java】Spring Boot 日志文件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

SpringBoot日志文件

1. 日志有什么用

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

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

  • 记录用户登录日志,方便分析用户是正常登录,还是恶意破解用户
  • 记录系统的操作日志,方便数据恢复和定位操作人
  • 记录程序的执行时间,方便以后优化程序提供数据支持

2. 日志怎么用

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

java的spring的日志,# Spring,java,spring boot,spring

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

  • Spring Boot内置了日志框架
  • 默认情况下,输出的日志并不是开发者定义和打印的,那么开发者怎么在程序中定义打印日志?
  • 日志默认是打印在控制台上,而控制台的日志是不能被保存的, 如何将日志永久的保存下来?

3. 自定义日志打印

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

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

3.1 在程序中得到日志对象

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

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

注意:logger对象属于org.slf4j包下的,不要导错了
java的spring的日志,# Spring,java,spring boot,spring

3.2 使用日志对象打印日志

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

@Controller
@ResponseBody
public 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");
    }
}

java的spring的日志,# Spring,java,spring boot,spring

4. 日志级别

4.1 日志级别有什么用?

  • 日志级别可以帮你筛选出重要的信息,比如设置日志级别为error,那么就可以只看到程序的报错日志了,对于普通的调试日志和业务日志就可以忽略了。从而节省开发者筛选的时间
  • 日志级别可以控制不同环境下,一个程序是否需要打印日志,如开发环境我们需要很详细的信息,而生产环境为了保持性能和安全性就会输出少量的日志,而通过日志级别可以实现此类需求

4.2 日志级别的分类与使用

日志级别分为:

  • trace: 微量,少许的意思,级别最低
  • debug:需要调试时候的关键信息打印
  • info:普通的打印信息(默认日志级别)
  • warn:警告:不影响使用,但需要注意的问题
  • error:错误信息,级别较高的错误日志信息
  • fatal:致命的,因为代码异常导致程序退出执行的事件

日志级别的顺序:
java的spring的日志,# Spring,java,spring boot,spring

越往上,接收到的信息就越少,如设置了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 依赖

首先要安装一个插件:java的spring的日志,# Spring,java,spring boot,spring

然后再pom.xml页面右键、java的spring的日志,# Spring,java,spring boot,springjava的spring的日志,# Spring,java,spring boot,spring
java的spring的日志,# Spring,java,spring boot,spring

最后重新添加依赖就可以了
java的spring的日志,# Spring,java,spring boot,spring

6.2 输出日志

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

6.3 lombok原理解释

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

java的spring的日志,# Spring,java,spring boot,spring

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

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

java的spring的日志,# Spring,java,spring boot,spring

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个级别:

  • trace:微量,少许的意思,级别最低
  • debug:需要调试的时候的关键信息打印
  • info:普通的打印信息
  • warn:警告,不影响使用,但需要注意的问题
  • error:错误信息,级别较高的错误日志信息
  • fatal:致命的,因为代码异常导致程序退出执行的事件

日志级别依次提升,而日志级别越高,收到的日志信息也就越少,我们可以通过配置日志的保存域名或保存目录来将日志永久的保存下来文章来源地址https://www.toymoban.com/news/detail-791254.html

到了这里,关于【Java】Spring Boot 日志文件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【JavaEE】Spring Boot - 日志文件

    【JavaEE】Spring Boot 开发要点总结(3) 写代码不是概率事件,bug的出现必然是有原因的,而日志的主要作用就是,排查和定位问题! 而日志的生成就是随着程序的进行和一步步生成的,不说全部过程都记录得清清楚楚,至少重要的点和环节或者一些异常情况都有记录 而通过日

    2024年02月14日
    浏览(50)
  • 【Spring Boot学习二】日志文件

    目录 🌷1、自定义输出日志 🌷 2、日志级别 2.1 日志级别分类(6种) 2.2 配置日志级别(在.yml文件中设置:) (1)设置日志整体级别 (2)分目录设置日志级别 🌷3、日志怎么持久化 3.1 设置日志文件名和路径(.yml文件下配置)  3.2 对日志分割:每隔多少M分割 🌷4、更简单的

    2024年02月16日
    浏览(49)
  • Spring Boot 配置文件和日志

    目录 配置文件格式 properties配置文件说明 1.properties基本语法 2.读取配置文件 3.properties缺点 yml配置文件说明 1.yml基本语法 2.配置不同数据类型 3.字符串特殊情况 4.配置对象 properties和yml对比 日志 日志的使用 日志级别 日志持久化 Lombok Lombok原理解释 Spring中配置文件有很重要的

    2024年01月19日
    浏览(57)
  • Spring Boot配置保存日志文件

    springboot日志配置: springboot默认日志是打印再console中的,不会保存在文件中。我们项目上线肯定要保存日志用于分析的。 一、使用xml配置日志保存(并不需要pom配置slf4j依赖,starter里面已经配置了依赖了) 1、在项目的resources目录下创建一个【logback-spring.xml】日志配置文件

    2024年02月11日
    浏览(43)
  • Spring Boot配置文件及日志信息

    目录 前言: Spring Boot优点 配置文件 配置文件格式 读取配置文件 properties配置文件格式 properties优缺点分析 yml配置文件格式(另一种标记语言) yml优缺点分析 Spring Boot 不同平台配置文件规则 日志信息 日志的功能 Spring Boot内置日志框架 使用日志 得到日志对象 打印日志 日志

    2024年02月01日
    浏览(61)
  • Java实战:Spring Boot application.yml配置文件详解

    本文将详细介绍Spring Boot application.yml 配置文件的使用和配置项。我们将探讨 application.yml 文件的基本概念,以及如何使用它来配置Spring Boot应用程序的各个方面。此外,我们将通过具体的示例来展示如何配置不同的Spring Boot组件,如数据源、数据库、缓存、邮件服务等。本文适

    2024年04月24日
    浏览(42)
  • java Spring Boot将不同配置拆分入不同文件管理

    关于java多环境开发 最后还有一个小点 我们一般会将不同的配置 放在不同的配置文件中 好处肯定就在于 想换的时候非常方便 那么 我们直接看代码 我们将项目中的 application.yml 更改代码如下 这里 意思是 我们选择了dev 环境 然后创建一个文件 叫 application-dev.yml 参考代码如下

    2024年02月11日
    浏览(62)
  • 【Spring Boot学习】日志文件,Spring Boot也会写日记了,这些事你知道嘛 ? ? ?

    前言: 大家好,我是 良辰丫 ,在上一篇文章中我们已经学习了Spring Boot的配置,接下来我们要学习一些日志相关的东西,什么是日志呢?我们慢慢往下看.💌💌💌 🧑个人主页:良辰针不戳 📖所属专栏:javaEE进阶篇之框架学习 🍎励志语句:生活也许会让我们遍体鳞伤,但最终这些

    2024年02月08日
    浏览(46)
  • Java(二):Spring Boot 项目-文件的增删改查下载

    docker运行mysql 设置MySQL时区 添加修改 /mysql/conf.d/xxx.cnf 文件,并重启 MySQL 查看当前MySQL使用的时区 MySQL建库建表 数据表实体类 注意: 规定参数时区 com/example/user/entity/FileTable.java 查询条件实体类 com/example/user/entity/FileTableCondition.java com/example/user/utils/FileUtil.java mapper user/src/mai

    2024年02月09日
    浏览(50)
  • Java spring-boot项目中如何上传下载文件或图片到spring-boot规定的非静态目录

    spring-boot的项目,虽然它自己定义了一个静态文件的存储目录,但是这个目录一般是作为前端静态文件的目录来作为使用的。如果使用这个静态目录来作为我们上传文件的目录会有一个比较尴尬的地方:将spring-boot打包成为jar包后,随着上传图片的增多,这个jar包也会跟着变大

    2024年02月16日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包