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日

相关文章

  • 三张图彻底了解Java中字符串的不变性

    首先,让我们来了解Java中字符串的不变性。 Java中的字符串是不可变的。这意味着,一旦字符串被创建,它的值不可以被改变。在Java中,每当我们对字符串进行操作的时候,都会创建一个新的字符串对象,而原始的字符串对象则保持不变。这个特性叫做字符串的“不变性”。 接下来,我们来看三张图来彻底了解Java中字符串的不变性。 图1:字符串的创建 String s …

    Java 2023年5月27日
    00
  • Java struts2捕获404错误的方法汇总

    Java struts2捕获404错误的方法汇总 在使用Java struts2开发Web应用时,404错误是比较常见的错误之一。当客户端请求的URL在服务器中不存在时,就会返回404错误。而如何正确地捕获404错误,处理并给用户一个友好的提示信息,则需要开发者进行处理。 下面将介绍两种捕获404错误的方法: 方法一:利用struts2的异常处理机制 在st…

    Java 2023年5月20日
    00
  • Arthas排查Kubernetes中应用频繁挂掉重启异常

    以下是 Arthas 排查 Kubernetes 中应用频繁挂掉重启异常的完整攻略。 确认场景 首先,需要确认场景。用户反馈应用经常挂掉重启,需要排查问题。该应用运行在 Kubernetes 集群中。需要确定:是所有的节点都有相同的问题,还是只有某个节点有问题。同时,需要定位是否是应用级别的问题。 安装 Arthas 因为需要使用到 Arthas 工具,所以…

    Java 2023年5月20日
    00
  • SpringBoot日志配置操作全面介绍

    Spring Boot日志配置操作全面介绍 Spring Boot提供了强大的日志框架,可以帮助我们记录应用程序的运行状态和错误信息。本文将介绍如何配置Spring Boot日志,包括日志级别、日志输出格式、日志文件等。同时,我们还提供了两个示例,演示如何使用Spring Boot日志框架。 1. 日志级别 在Spring Boot中,我们可以通过配置日志级…

    Java 2023年5月14日
    00
  • springmvc整合freemarker配置的详细步骤

    下面是springmvc整合freemarker配置的详细步骤: 1.添加maven依赖 <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version&gt…

    Java 2023年5月19日
    00
  • 基于Java的电梯系统实现过程

    实现基于Java的电梯系统完整攻略 1. 设计电梯系统模型 首先,我们需要设计一个电梯系统模型,它应该包含以下几个部分: 电梯类:此类应该包括电梯当前所在楼层、电梯目标楼层、电梯运行状态(上升、下降、停止)等属性,并且应该提供控制电梯上升和下降的方法。 楼层类:此类应该包括楼层的编号、电梯呼叫按钮的状态(有人按下或未按下)等属性,并且应该提供控制电梯到达某个…

    Java 2023年5月19日
    00
  • jsp 网站引入外部css或者js失效问题解决

    当JSP网站引入外部CSS或JS时,如果失效,这可能是因为有一些问题。下面我将提供一些常见问题及其解决方案,以帮助您解决这些问题。 问题1:文件路径错误 引入外部CSS或JS时,需要确保文件路径正确。如果文件路径错误,浏览器将无法加载CSS或JS文件。解决此问题的方法是使用绝对路径或相对路径指定文件路径。 示例1:使用绝对路径指定文件路径 <link …

    Java 2023年6月15日
    00
  • Java源码难点突破Lambda表达式执行原理

    针对“Java源码难点突破Lambda表达式执行原理”这个话题,我可以给您提供以下完整攻略: 1. 理解Lambda表达式的定义和语法 要想理解Lambda表达式的执行原理,首先需要了解Lambda表达式的定义和语法。Lambda表达式是一种匿名函数,可以被视为一种简洁的代码块,可以作为参数传递给方法或者存储在变量中。 Lambda表达式的一般语法如下所示:…

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