Spring Boot日志的打印与持久化详细解析

目录
  • 1. 日志有什么用
  • 2. 日志怎么用
  • 3. Spring Boot 自定义日志的打印
    • 3.1 先获取到打印日志对象
    • 3.2 使用日志对象打印日志
    • 3.3 日志格式说明
  • 4. 日志级别
  • 5. 日志持久化(将日志永久的保存到磁盘的某个位置)
    • 设置日志的保存路径
  • 6. 更简单的日志输出—lombok
    • 6.1 添加 lombok 到当前项目
    • 6.2 使用 @Slf4j 得到日志对象 log
  • 总结

1. 日志有什么用

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

答案是否定的,写程序不是买彩票,不能完全靠猜,因此日志对应我们来说,最重要的用途就是排除和定位问题。

除了发现和定位问题之外,我们还可以通过日志实现以下功能:

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

2. 日志怎么用

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

以上内容就是 Spring Boot 输出的控制台日志信息。

通过上述日志信息我们可以发现以下3个问题:

  • Spring Boot 内置了日志框架(不然也输出不了日志)
  • 默认情况下,输出的⽇志并⾮是开发者定义和打印的,那开发者怎么在程序中⾃定义打印⽇志呢?
  • ⽇志默认是打印在控制台上的,⽽控制台的⽇志是不能被保存的,那么怎么把⽇志永久的保存下来 呢?

下面我们一起来找寻这些问题的答案。

3. Spring Boot 自定义日志的打印

  • 在一个类中先获取到打印日志对象(日志框架提供的日志对象,而日志框架默认已经集成到 Spring Boot 里了)
  • 使用日志对象提供的方法实现日志的打印

3.1 先获取到打印日志对象

在程序中获取日志对象需要使用日志工厂 LoggerFactory,如下代码所示:

 // 1.先得到日志对象(来自 slf4j)
    private static final Logger log =
            LoggerFactory.getLogger(UserController.class);

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

注意:Logger 对象是属于 org.slf4j 包下的,不要导入错误。

因为 Spring Boot 中内置了日志框架 slf4j,所以 咋们可以直接在程序中调用 slf4j 来输出日志

3.2 使用日志对象打印日志

日志对象的打印方法有很多,我们可以先使用 info() 方法来输出日志,如下代码所示:

// 2.使用日志对象提供的打印方法进行日志打印
        log.trace("我是 trace");
        log.debug("我是 debug");
        log.info("我是 info");
        log.warn("我是 warn");
        log.error("我是 error");

打印效果展示:

3.3 日志格式说明

4. 日志级别

5. 日志持久化(将日志永久的保存到磁盘的某个位置)

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

想要将⽇志进⾏持久化,只需要在配置⽂件中指定⽇志的存储⽬录或者是指定⽇志保存⽂件名之后, Spring Boot 就会将控制台的⽇志写到相应的⽬录或⽂件下了。

设置日志的保存路径

在配置文件中,输入如下代码:

# 设置日志的保存路径
# 正确设置日志路径的方式1
logging.file.path=D:/JavaCode/
# 正确设置日志路径的方式2
logging.file.path=D:\\JavaCode\\

保存后:

注意:

logging.file.path=D:\JavaCode\

这种写法,Spring Boot 会认为是一个特殊字符,而非目录,所以日志持久化不会成功。

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

每次都使用 LoggerFactory.getLogger(xxx.class) 很繁琐,而且每个类都要添加一遍,也很麻烦,这里有种更好的日志输出方式,使用 lombok 来更简单的输出。

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

6.1 添加 lombok 到当前项目

1.在 pom.xml 中先删除已有的 lombok 依赖

2.下载插件

下载好之后,手动引入 lombok 依赖

6.2 使用 @Slf4j 得到日志对象 log

@Controller
@ResponseBody
@Slf4j // 替代了之前需要通过 LoggerFactory.getLogger 操作
public class UserService {
        @RequestMapping("/sayhi2")
        public void sayHi2() {
                log.trace("我是 trace");
                log.debug("我是 debug");
                log.info("我是 info");
                log.warn("我是 warn");
                log.error("我是 error");
        }
}

控制台打印结果如下:

总结

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

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

⽇志级别依次提升,⽽⽇志界别越⾼,收到的⽇志信息也就越少,我们可以通过配置⽇志的保存名称或 保存⽬录来将⽇志永久地保存下来。

到此这篇关于Spring Boot日志的打印与持久化详细解析的文章就介绍到这了,更多相关Spring Boot日志内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Spring boot2.0 日志集成方法分享(1)

    目录 前言: 1.基本引用 2.基础配置 3.基本使用 前言: 项目开发中日志是不可缺少的一部分,通过日志能够定位和分析事故原因.目前流行日志框架包含了log4j.log4j2.logback等,另外 slf4j(Simple Logging Facade for Java) 则是一个日志门面框架,提供了日志系统中常用的接口,logback 和 log4j 则对slf4j 进行了实现.本文将讲述spring boot 中如何使用logback+slf4j实现日志. Java应用中,日志一般分为以

  • SpringBoot深入了解日志的使用

    目录 1. 日志的作用 2. 日志怎么用 3. 自定义日志打印 3.1 得到日志对象 3.2 使用日志对象提供的方法打印日志 3.3 日志格式说明 4. 日志级别 4.1 日志级别分类 4.2 日志级别的配置 5. 日志持久化 6. 更简单的实现自定义日志的打印 6.1 准备工作,添加 lombok 到项目中 6.2 使用 @Slf4j 得到日志对象 6.3 使用 log 对象自定义打印日志 6.4 lombok 更多注解说明 1. 日志的作用 日志是程序的重要组成部分,在程序报错的时候,如果我

  • springboot自定义日志注解的实现

    前言 在之前的日志记录的写法中,我们大多是写一个工具类,在这个类里面定义日志保存的方法,然后再controller中执行请求的时候调用即可,虽然调用仅仅一行代码,但是不够友好:所有可以写一个类似于@Controller等的注解,在需要保存日志的方法上面加上一个注解,这样不用在每个都写一端代码:话不多说上代码 1.首先一个log的实体类,这个无关紧要 package com.sysmg.system.domain;   import java.io.Serializable; import jav

  • springboot如何去除debug日志

    目录 springboot去除控制台打印的debug日志 1.创建logback-spring.xml文件 2.给application.properties文件 无法控制springboot中的debug日志 问题 最后试了一下,这样解决的 springboot去除控制台打印的debug日志 1.创建logback-spring.xml文件 文件内容如下 <?xml version="1.0" encoding="UTF-8"?> <config

  • Springboot允许logger.debug输出日志方式

    目录 Springboot允许logger.debug输出日志 SpringBoot启动debug级别日志报错 错误截图 原因 解决办法 Springboot允许logger.debug输出日志 说实话对日志这东西一直只是太肤浅的懂,就会用logger.info和logger.error输出,今天在写LemonRobot项目的时候,决定把调试信息也打出来,然后根据日志级别控制让上线的时候不显示debug级别的日志. 但是运行后发现,默认logger.debug产生的日志也没有输出到控制台,经过一

  • Spring boot2.0 实现日志集成的方法(3)

    目录 前言 具体实现 定义日志注解 定义日志切面 基本使用 输出信息 总结 前言 上一章Spring boot2.0 实现日志集成的方法(2)主要讲解了将日志信息根据类别输出到不同的文件中,实际开发中我们需要通过日志来监控用户的操作行为.请求的耗时情况,针对耗时久的请求进行性能分析,提升系统性能. 具体实现 采用的Spring Aop切面技术来实现控用户的操作行为.请求的耗时情况. 定义日志注解 @Target({ ElementType.METHOD }) @Retention(Retenti

  • SpringBoot详细讲解日志文件

    目录 1 日志的功能是什么? 2 如何自定义日志打印 2.1 在程序中获取日志对象 2.2 调用日志对象打印日志 2.3 查看日志打印的结果 3 日志的级别 3.1 日志级别的分类 3.2 日志级别的设置 4 日志持久化 5 更简单的日志输出 5.1 添加 lombok 依赖 5.2 输出日志 5.3 lombok 更多的注解 1 日志的功能是什么? 如果程序报错了, 却不能从控制台查看日志, 那么就不知道错误的原因了. 日志的功能 : 快速的排查和定位问题 记录用户登录的日志 记录系统的操作日

  • Spring boot2.0 实现日志集成的方法(2)

    目录 前言: logback.xml配置文件定义 引用自定义logback.xml文件 附加说明 前言: 上一章Spring boot2.0 日志集成方法分享(1)讲解了spring boot日志简单集成,将所有的日志都输出到一个文件中,但是在实际的项目中,我们需要将日志进行分类,常规日志.异常日志.监控日志等,需要将日志输出到不同的文件中.spring boot 日志默认采用的是sf4j+logback实现,默认配置文件为logback-spring.xml,如果需要输出到不同的文件,需要自定

  • Spring Boot日志的打印与持久化详细解析

    目录 1. 日志有什么用 2. 日志怎么用 3. Spring Boot 自定义日志的打印 3.1 先获取到打印日志对象 3.2 使用日志对象打印日志 3.3 日志格式说明 4. 日志级别 5. 日志持久化(将日志永久的保存到磁盘的某个位置) 设置日志的保存路径 6. 更简单的日志输出—lombok 6.1 添加 lombok 到当前项目 6.2 使用 @Slf4j 得到日志对象 log 总结 1. 日志有什么用 日志是程序的重要组成部分,想象一下,如果程序报错了,不让你打开控制台看日志,那么你

  • Spring Boot日志技术logback原理及配置解析

    一.logback日志技术介绍 Spring Boot中使用的日志技术为logback.其与Log4J都出自同一人,性能要优于Log4J,是Log4J的替代者. 在Spring Boot中若要使用logback,则需要具有spring-boot-starter-logging依赖,而该依赖被spring-boot-starter-web所依赖,即不用直接导入spring-boot-starter-logging依赖. 二.添加配置属性 该文件名为logback.xml,且必须要放在src/mai

  • 浅谈Spring Boot日志框架实践

    Java应用中,日志一般分为以下5个级别: ERROR 错误信息 WARN 警告信息 INFO 一般信息 DEBUG 调试信息 TRACE 跟踪信息 Spring Boot使用Apache的Commons Logging作为内部的日志框架,其仅仅是一个日志接口,在实际应用中需要为该接口来指定相应的日志实现. SpringBt默认的日志实现是Java Util Logging,是JDK自带的日志包,此外SpringBt当然也支持Log4J.Logback这类很流行的日志实现. 统一将上面这些 日志

  • spring boot日志管理配置

    spring Boot在所有内部日志中使用Commons Logging,但是默认配置也提供了对常用日志的支持,如:Java Util Logging,Log4J,Log4J2和Logback.每种Logger都可以通过配置使用控制台或者文件输出日志内容. 控制台输出 在Spring Boot中默认配置了ERROR.WARN和INFO级别的日志输出到控制台. 我们可以通过两种方式切换至DEBUG级别: a.在运行命令后加入--debug标志,如:$ Java -jar myapp.jar --d

  • spring boot 日志/页面处理、实体类构建、后台管理功能的实现

    目录 一.配置文件的编写 1.配置文件 2.导入依赖 二.日志框架处理 1.默认配置 2.个性配置 3.自动生成的日志文件 三.页面处理 1. 控制器 2.配置错误友好页面 四.实体类构建 1.创建持久层实体类Entity 2.注解的使用 五.后台管理 1.配置持久层组件 2.标注业务层组件 3.编写控制器 4.例 一.配置文件的编写 1.配置文件 为方便我们的开发,我们需要构建三个环境下的配置文件分别是通用环境.开发环境和生产环境下的yml格式配置文件 并且在开发环境配置中配置好我们的数据库和

  • spring boot 日志配置详解

    最近在学习spring boot框架的路上,今日看了一下spring boot日志配置,顺便留个笔记记录一下. 1.新建logback.xml文件 内容如下: <!-- Logback configuration. See http://logback.qos.ch/manual/index.html --> <configuration scan="true" scanPeriod="10 seconds"> <include res

  • 基于spring boot 日志(logback)报错的解决方式

    记录一次报错解决方法: No converter found capable of converting from type [java.lang.String] to type [java.util.Map<java.lang.String, java.lang.String>] org.springframework.boot.context.properties.bind.BindException: Failed to bind properties under 'logging.le

  • spring boot基于DRUID实现数据源监控过程解析

    这篇文章主要介绍了spring boot基于DRUID实现数据源监控过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 随着需求和技术的日益革新,spring boot框架是越来越流行,她也越来越多地出现在我们的项目中,当然最主要的原因还是因为spring boot构建项目实在是太爽了,构建方便,开发简单,而且效率高.今天我们并不是来专门学习spring boot项目的,我们要讲的是数据源的加密和监控,监控到好说,就是不监控也没什么问题,但

  • SpringBoot + Spring Cloud Consul 服务注册和发现详细解析

    什么是Consul Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置.与其它分布式服务注册与发现的方案,Consul 的方案更"一站式",内置了服务注册与发现框架.分布一致性协议实现.健康检查.Key/Value 存储.多数据中心方案,不再需要依赖其它工具(比如 ZooKeeper 等).使用起来也较为简单.Consul 使用 Go 语言编写,因此具有天然可移植性(支持Linux.windows和Mac OS X):安装包仅包含一个可执行文件

  • Spring Boot整合Elasticsearch实现全文搜索引擎案例解析

    简单说,ElasticSearch(简称 ES)是搜索引擎,是结构化数据的分布式搜索引擎.Elastic Search是一个开源的,分布式,实时搜索和分析引擎.Spring Boot为Elasticsearch及Spring Data Elasticsearch提供的基于它的抽象提供了基本的配置.Spring Boot提供了一个用于聚集依赖的spring-boot-starter-data-elasticsearch 'StarterPOM'. 引入spring-boot-starter-dat

随机推荐