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日

相关文章

  • SpringMVC异步处理的 5 种方式示例详解

    针对“SpringMVC异步处理的 5 种方式示例详解”的完整攻略,我将从以下几个方面进行详细讲解: 什么是SpringMVC异步处理 SpringMVC异步处理的5种方式 异步处理方式的示例说明 总结 1. 什么是SpringMVC异步处理 在SpringMVC中,一般的请求处理是同步的,也就是说请求到达后一直会占用线程,等待响应并返回结果。但是面对一些复…

    Java 2023年5月16日
    00
  • jsp输出当前时间的实现代码

    实现jsp输出当前时间需要使用Java中的Date类和SimpleDateFormat类。下面是完整的攻略: 导入相关的类和包 在jsp页面中需要导入以下两个类: <%@ page import="java.util.Date" %> <%@ page import="java.text.SimpleDateF…

    Java 2023年6月15日
    00
  • 基于restTemplate遇到的编码问题及解决

    接下来我会详细讲解“基于restTemplate遇到的编码问题及解决”的完整攻略,并提供两条示例。 问题描述 在使用RestTemplate发送http请求时,我们会遇到编码问题。接口返回的中文乱码,而传入参数的中文又正常,这是为什么呢? 主要原因是http协议默认使用的是ISO-8859-1编码,而中文使用的编码格式是UTF-8,即发送的请求和接收的响应使…

    Java 2023年5月20日
    00
  • java如何交换这两个变量的值方法介绍

    下面我来为您详细讲解“java如何交换这两个变量的值方法介绍”。 在Java中,有多种方法可以交换两个变量的值,常见的方法有使用中间变量、使用加减法和使用异或运算。 使用中间变量交换变量值 这是一种最简单的方法,通过定义一个中间变量来存储变量值,然后交换两个变量的值。示例代码如下: int a = 10; int b = 20; int temp = a; …

    Java 2023年5月26日
    00
  • JSP 从配置文件获取参数详解

    JSP 从配置文件获取参数是 Web 开发中常见的一种需求,通过配置文件可以方便的修改参数,而不需要修改代码,所以也是一种很好的实践方式。下面是从配置文件获取参数的详细攻略。 步骤1:创建配置文件 首先需要创建一个配置文件,一般命名为config.properties,该文件中存储了需要获取的参数及其对应的值。 举个例子,如果我们需要从配置文件中获取数据库连…

    Java 2023年6月15日
    00
  • html css将表头固定的最直接的方法

    要将表头固定,最直接的方法是使用CSS中的position属性和z-index属性。具体步骤如下: HTML结构 首先,我们需要在HTML结构中将表格分为两部分:表头和表体。表头使用 标签,表体使用 标签。代码示例如下: <table> <thead> <tr> <th>姓名</th> <th…

    Java 2023年6月15日
    00
  • Java实现AOP面向切面编程的实例教程

    下面就来详细讲解“Java实现AOP面向切面编程的实例教程”的完整攻略。 什么是AOP AOP(Aspect Oriented Programming,面向切面编程)是一种编程思想。与传统的OOP(Object Oriented Programming,面向对象编程)相比,AOP注重在运行时动态地将代码切入到不同的对象中进行操作。 AOP的优势 代码复用:将…

    Java 2023年5月18日
    00
  • Spring Boot Cache使用方法整合代码实例

    下面我将详细讲解“Spring Boot Cache使用方法整合代码实例”的完整攻略。 一、什么是Spring Boot Cache Spring Boot Cache是Spring Boot中的缓存框架,它提供了一种简单的方式来缓存数据的读取结果,从而减少不必要的计算并提升应用程序的性能。 二、Spring Boot Cache使用方法 1. 引入依赖 在…

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