SpringBoot打印启动时异常堆栈信息详解

讲解SpringBoot打印启动时异常堆栈信息的完整攻略,具体步骤如下:

1. 开启Debug模式

在SpringBoot启动类中,添加以下代码:

@SpringBootApplication
public class DemoApplication {

  public static void main(String[] args) {
    // 开启Debug模式
    System.setProperty("debug", "true");
    SpringApplication.run(DemoApplication.class, args);
  }

}

2. 打印堆栈信息

在应用启动时,如果存在异常信息,可以通过日志打印堆栈信息。可以通过在 application.yml(或者 application.properties)文件中配置相应的日志级别,以打印对应的堆栈信息。如下所示:

# 配置日志级别
logging:
  level:
    root: error  # 根日志级别为error,只记录error级别及以上的日志信息
    org.springframework.web: debug  # 打印SpringWeb相关的所有debug级别日志信息
    org.hibernate: debug  # 打印Hibernate相关的所有debug级别日志信息
    org.mybatis: debug  # 打印MyBatis相关的所有debug级别日志信息

以上配置会将SpringWeb、Hibernate和MyBatis相关的所有debug级别的日志信息输出到控制台,包括对应的堆栈信息。

示例说明

为了便于理解,下面以两个具体的示例来说明如何打印启动时的异常堆栈信息。

示例一:数据库连接异常

假设应用启动时,连接MySQL数据库失败,那么可以打印出如下的堆栈信息:

2019-07-16 15:45:36.923 ERROR 80656 --- [           main] com.zaxxer.hikari.pool.HikariPool        : HikariPool-1 - Exception during pool initialization.

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_171]
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0_171]
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.8.0_171]
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[na:1.8.0_171]
...

可以看到,在连接MySQL数据库时,出现了通信异常,而这个异常被打印在堆栈信息中,供开发者调试使用。

示例二:Bean初始化异常

假设应用启动时,某个Bean的初始化出现了异常,那么可以打印出如下的堆栈信息:

2019-07-16 15:55:51.239 ERROR 81218 --- [           main] o.s.b.SpringApplication               : Application run failed

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'myTask' defined in file [/Users/apple/workspace/demo/target/classes/com/example/demo/schedule/MyTask.class]: Initialization of bean failed; nested exception is java.lang.IllegalArgumentException: Fixed rate must be positive as a non-zero value
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:591) ~[spring-beans-5.1.8.RELEASE.jar:5.1.8.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:516) ~[spring-beans-5.1.8.RELEASE.jar:5.1.8.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:324) ~[spring-beans-5.1.8.RELEASE.jar:5.1.8.RELEASE]
...

可以看到,某个Bean的初始化出现了异常,原因是Fixed rate必须是正数。

通过上述两个示例,我们可以清楚地了解如何打印SpringBoot应用启动时的异常堆栈信息。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot打印启动时异常堆栈信息详解 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • 迅速学会@ConfigurationProperties的使用操作

    下面我将为您详细讲解“迅速学会@ConfigurationProperties的使用操作”的完整攻略。 什么是@ConfigurationProperties @ConfigurationProperties是Spring Boot提供的一种读取properties配置文件的注解。通过在类上添加此注解,可以将属性值自动绑定到该类的对应字段上,并且可以对属性值…

    Java 2023年5月23日
    00
  • java 启动exe程序,传递参数和获取参数操作

    为在Java中启动.exe程序并传递参数,有以下几个步骤: 使用Runtime.getRuntime()获取运行时对象。 使用运行时对象的exec()方法执行需要启动的.exe程序,并获得其进程对象Process。 调用进程对象Process的getOutputStream()和getInputStream()方法获取标准输出流和输入流。 使用标准输出流向.…

    Java 2023年5月23日
    00
  • js中几种去掉字串左右空格的方法

    当我们操作字符串时,常常需要将字符串的左右两端空格去掉。在 JavaScript 中,去掉字符串左右空格的方法有多种。下面是几种去掉字符串左右空格的方法的详细攻略: 使用trim()方法 使用 trim() 方法,可以去掉字符串两端的空格,同时该方法还可以去掉字符串两端的所有空白字符(包括空格、制表符、换行符等)。 let str = ‘ hello wor…

    Java 2023年6月15日
    00
  • 详解jvm对象的创建和分配

    我来为你详细讲解“详解jvm对象的创建和分配”的完整攻略。 什么是JVM? 首先,让我们来了解一下JVM是什么。JVM全称为Java Virtual Machine,即Java虚拟机,是Java程序的运行环境。JVM是Java应用程序与操作系统之间的一层抽象,负责管理程序的运行、内存分配等工作。 JVM对象的创建 在Java语言中,对象是通过new关键字来创…

    Java 2023年5月26日
    00
  • SpringBoot项目集成依赖Mybatis步骤

    下面是SpringBoot项目集成依赖Mybatis步骤的完整攻略。 1. 引入Mybatis相关依赖 在pom.xml文件中添加以下依赖,其中包括Mybatis核心依赖 mybatis-spring-boot-starter ,Mysql驱动包mysql-connector-java以及Mybatis分页插件pagehelper。 <!– myba…

    Java 2023年5月19日
    00
  • Java 中EasyExcel的使用方式

    下面是Java中EasyExcel的使用方式的完整攻略: 1. 简介 EasyExcel是一款基于Java开发的、功能强大的Excel读写解决方案,使用起来方便快捷,支持读写Excel、CSV、HTML、JSON等文件格式,并且具有高性能,内存消耗低等优点,是目前比较流行的Excel读写工具之一。 2. 如何使用 2.1 引入依赖 在项目中引入EasyExc…

    Java 2023年6月2日
    00
  • SpringBoot DataSource数据源实现自动配置流程详解

    这里是关于SpringBoot DataSource数据源实现自动配置流程的详细攻略: 1. SpringBoot DataSource数据源的概述 SpringBoot 数据源(DataSource)是一个非常重要的组件,它是应用程序和后端数据库之间的桥梁。DataSource 有两个关键任务:一是管理数据库连接池,以便应用可以快速、高效地访问数据库;二是…

    Java 2023年6月2日
    00
  • JNDI在JavaEE中的角色_动力节点Java学院整理

    JNDI在JavaEE中的角色 JNDI的概念 JNDI即Java Naming and Directory Interface,是Java EE中的一个API,提供了对命名和目录服务进行访问的接口。在Java EE开发中,JNDI经常用来访问JDBC、EJB、JavaMail等资源。 JNDI的作用 使用JNDI,开发者可以将Java EE应用程序中的一些…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部