springboot启动后卡住无日志的几种情况小结

yizhihongxing

下面是关于“SpringBoot启动后卡住无日志的几种情况小结”完整攻略:

问题背景

在使用SpringBoot开发JavaWeb应用时,有时候可能会遇到启动后卡住无日志的情况,导致我们无法知道整个启动过程的具体信息。这种情况通常有以下几种原因:

  1. 应用启动卡在某个点,等待某个线程执行完成
  2. 应用启动时出现了未捕获的异常
  3. 应用启动时依赖的外部服务出现了故障

接下来我们将详细讲解如何解决这些问题。

场景一:应用启动卡在某个点

症状

  • 应用启动后日志输出停止,无任何异常信息
  • 控制台输出类似于以下样式,且不再继续输出任何信息:
2018-12-17 16:26:44.901  INFO 81876 --- [f61d16dc-1]) o.s.web.servlet.DispatcherServlet       :

解决方法

通过调整日志级别来查看哪个类卡住了应用。在 application.properties 文件中添加以下配置:

logging.level.root=DEBUG

然后,重新启动应用。应用启动完毕后,查找日志,找到最后一条日志记录,查看该记录的所在类,找到该类所在的包,并修改该包的日志级别为 DEBUG 级别。重启应用,查看日志,就可以发现卡住的类并定位问题了。

场景二:应用启动时出现了未捕获的异常

症状

  • 应用启动后控制台无任何日志输出
  • 可以使用 ps -ef | grep java 命令检查进程是否存在
  • 如果进程存在则可以通过 jstack 命令获取应用的线程信息

解决方法

通过查看线程信息来定位应用启动时的异常。在终端中执行以下命令,获取Java应用的进程号:

ps -ef | grep java

然后执行以下命令,获取应用的线程信息:

jstack <PID>

这时,会输出大量的线程信息,其中可能会包含异常堆栈信息。通过查找异常堆栈信息,以及查看代码和配置文件,我们可以找到问题出在哪里,然后进行修复。

场景三:应用启动时依赖的外部服务出现了故障

症状

  • 应用启动后控制台无任何日志输出
  • 控制台会输出一条类似于“Waiting for service to start”的信息,并持续等待
  • 应用启动后不能访问某些外部服务

解决方法

对于这种情况,需要检查应用依赖的外部服务是否可以正常访问。可以通过以下方法判断外部服务是否正常:

  • 直接在浏览器中访问服务地址,检查是否能够正常响应
  • 在应用启动之前手动访问所依赖的服务,并检查是否返回了正确的响应

如果外部服务出现故障,则需要等待外部服务恢复正常,才能重新启动应用。

示例解决方法

假设我们在使用 Spring Boot 开发 Web 服务时遇到了启动失败的问题,通过调整日志级别后,发现应用启动是卡在某个 Controller 上,无法继续执行。我们在检查代码后,发现是因为该 Controller 依赖的外部服务无法提供正常的服务,导致应用启动卡住无法继续。

我们可以通过手动访问外部服务,查看其响应情况,或者等待外部服务恢复正常再次启动应用,解决这个问题。

总结

在开发 Spring Boot 项目时,可能会遇到应用启动卡住无日志输出的问题。通过以上的攻略,我们可以快速地解决这些问题。在解决问题时,需要结合具体情况进行判断和处理,才能更好地定位问题。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:springboot启动后卡住无日志的几种情况小结 - Python技术站

(0)
上一篇 2023年6月2日
下一篇 2023年6月2日

相关文章

  • SSM框架整合之Spring+SpringMVC+MyBatis实践步骤

    SSM框架整合之Spring+SpringMVC+MyBatis实践步骤 SSM框架整合是Java Web开发中常用的一种方式,它将Spring、SpringMVC和MyBatis三个框架整合在一起,可以提高开发效率和代码质量。本文将详细介绍SSM框架整合的实践步骤,并提供两个示例说明。 实践步骤 步骤一:创建Maven项目 首先,我们需要创建一个Maven…

    Java 2023年5月17日
    00
  • Spring Boot整合JWT的实现步骤

    下面是详细讲解Spring Boot整合JWT的实现步骤的完整攻略。 概述 JWT(JSON Web Token)是目前比较流行的身份验证和授权机制,它将用户的身份信息封装在 JSON 格式的 Token 中,在多个服务之间传递。Spring Boot是一种基于Spring框架的快速开发工具,支持构建独立的、生产级别的 Spring 应用程序。将Spring…

    Java 2023年5月19日
    00
  • AngularJS ng-blur 指令详解及简单实例

    AngularJS ng-blur 指令详解及简单实例 什么是ng-blur指令? ng-blur是AngularJS中的一个指令,它用于在指定元素失去焦点时执行一个表达式或函数。具体来说,当元素上绑定了ng-blur指令时,当该元素失去焦点时,会自动执行与该指令绑定的表达式或函数。 ng-blur指令的使用方法 我们可以将ng-blur指令添加到任何HTM…

    Java 2023年6月15日
    00
  • Spring Boot整合Kafka教程详解

    下面我来为你详细讲解“Spring Boot整合Kafka教程详解”的完整攻略。 Spring Boot整合Kafka教程详解 什么是Kafka Kafka是一个由Apache软件基金会开发的开源,分布式的发布/订阅系统。它具有高吞吐量、强大的可扩展性和容错性,并且可以处理大量的实时数据。此外,Kafka还提供了多种客户端API,可以用来发送和接收消息。 S…

    Java 2023年5月20日
    00
  • java编译命令基础知识点

    下面就来详细讲解一下Java编译命令的基础知识点,本次讲解分为以下几个部分: Java编译命令介绍 Java编译命令参数解释 Java编译命令示例 Java编译命令介绍 Java编译命令是指使用Java命令行工具(Command Prompt、Terminal等)来将Java源文件编译成可执行的Java字节码文件的命令。 Java编译命令的格式为:javac…

    Java 2023年5月20日
    00
  • 正则表达式匹配各种特殊字符

    正则表达式是一种用来匹配字符串的语言,它可以帮助我们在字符串中查找匹配特定模式的文本,包括各种特殊字符。下面是正则表达式匹配特殊字符的完整攻略: 1. 转义特殊字符 正则表达式中有些字符具有特殊的含义,比如”.”、”|”等,如果我们需要匹配这些特殊字符本身,需要在前面加上”\”来进行转义。例如: import re str = "The price…

    Java 2023年5月20日
    00
  • 基于Java设计一个短链接生成系统

    下面是详细讲解“基于Java设计一个短链接生成系统”的完整攻略: 1. 确定技术选型 短链接生成系统需要对 URL 进行加密编码,使其变成一个相对短且不易被外界猜测的字符串,而 Java 编程语言具有稳定的运行性能、丰富的第三方框架和库支持,因此选择 Java 作为系统的开发语言,而相对简单易用的 spring-boot 框架作为主要开发工具。 2. 简化开…

    Java 2023年5月24日
    00
  • java 加密之RSA算法加密与解密的实例详解

    Java加密之RSA算法加密与解密的实例详解 介绍 RSA(Rivest-Shamir-Adleman)算法是目前非对称加密中较为流行的一种加密方式,它解决了DES只有一个固定的加密和解密密钥的问题。RSA加密过程是公开的,解密过程只有私钥能够完成,私钥由用户自己保存。 本文将详细介绍使用Java对数据进行RSA加密和解密的全过程,并提供两个示例说明。 签名…

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