项目构建时抛出LoggerContextShutdownAware log 错误问题处理

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: SpringBoot应用的日志显示它尝试初始化Skywalking日志目录为/app/logs/skywalking。随后,应用程序一个异常,具体是`java.lang.reflect.InvocationTargetException`。问题可能是由于日志库的冲突或缺失导致的。建议检查项目中是否存在与SpringBoot内置日志系统冲突的自定义日志配置,并确保所有必要的日志依赖,如log4j-core和log4j-api,都已正确且版本匹配地引入。通过解决这些冲突并重新构建,应该可以解决这个问题。

11:53:32.799 INFO main SnifferConfigInitializer : skywalking logging dir: /info/app/logs/skywalking

Exception in thread "main" java.lang.reflect.InvocationTargetException

       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

       at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

       at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

       at java.lang.reflect.Method.invoke(Method.java:498)

       at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48)

       at org.springframework.boot.loader.Launcher.launch(Launcher.java:87)

       at org.springframework.boot.loader.Launcher.launch(Launcher.java:50)

       at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51)

Caused by: java.lang.NoClassDefFoundError: org/apache/logging/log4j/spi/LoggerContextShutdownAware

       at java.lang.ClassLoader.defineClass1(Native Method)

       at java.lang.ClassLoader.defineClass(ClassLoader.java:756)

       at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)

       at java.net.URLClassLoader.defineClass(URLClassLoader.java:473)

       at java.net.URLClassLoader.access$100(URLClassLoader.java:74)

       at java.net.URLClassLoader$1.run(URLClassLoader.java:369)

       at java.net.URLClassLoader$1.run(URLClassLoader.java:363)

       at java.security.AccessController.doPrivileged(Native Method)

       at java.net.URLClassLoader.findClass(URLClassLoader.java:362)

       at java.lang.ClassLoader.loadClass(ClassLoader.java:418)

       at org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:93)

       at java.lang.ClassLoader.loadClass(ClassLoader.java:351)

       at org.apache.logging.log4j.core.impl.Log4jContextFactory.createContextSelector(Log4jContextFactory.java:108)

       at org.apache.logging.log4j.core.impl.Log4jContextFactory.<init>(Log4jContextFactory.java:61)

       at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

       at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)

       at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)

       at java.lang.reflect.Constructor.newInstance(Constructor.java:423)

       at java.lang.Class.newInstance(Class.java:442)

       at org.apache.logging.log4j.LogManager.<clinit>(LogManager.java:94)

       at org.apache.commons.logging.LogFactory$Log4jLog.<clinit>(LogFactory.java:199)

       at org.apache.commons.logging.LogFactory$Log4jDelegate.createLog(LogFactory.java:166)

       at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:109)

       at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:99)

       at org.springframework.boot.SpringApplication.<clinit>(SpringApplication.java:200)

       at com.haoqian.cqdm.CqdmApplication.main(CqdmApplication.java:38)

       ... 8 more



分析SpringBoot中的日志关系


image.png


总结:

1.项目中的-logger可能和spring-boot自带的冲突了

2.需要把项目中的日志jar包进行排包

image.png

3.如果使用org.apache.logging.log4j 包查看log4j-core jar包对应的api包是否存在

4.如果不存在添加api包:如下

<dependency>
   <groupId>org.apache.logging.log4j</groupId>
   <artifactId>log4j-core</artifactId>
   <version>2.19.0</version>
</dependency>
<dependency>
   <groupId>org.apache.logging.log4j</groupId>
   <artifactId>log4j-api</artifactId>
   <version>2.19.0</version>
</dependency>

项目重新构建发布成功

image.png

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
4月前
|
存储 运维 监控
超越传统模型:从零开始构建高效的日志分析平台——基于Elasticsearch的实战指南
【10月更文挑战第8天】随着互联网应用和微服务架构的普及,系统产生的日志数据量日益增长。有效地收集、存储、检索和分析这些日志对于监控系统健康状态、快速定位问题以及优化性能至关重要。Elasticsearch 作为一种分布式的搜索和分析引擎,以其强大的全文检索能力和实时数据分析能力成为日志处理的理想选择。
288 6
|
2月前
|
人工智能 监控 算法
3D-Speaker:阿里通义开源的多模态说话人识别项目,支持说话人识别、语种识别、多模态识别、说话人重叠检测和日志记录
3D-Speaker是阿里巴巴通义实验室推出的多模态说话人识别开源项目,结合声学、语义和视觉信息,提供高精度的说话人识别和语种识别功能。项目包含工业级模型、训练和推理代码,以及大规模多设备、多距离、多方言的数据集,适用于多种应用场景。
314 18
3D-Speaker:阿里通义开源的多模态说话人识别项目,支持说话人识别、语种识别、多模态识别、说话人重叠检测和日志记录
|
2月前
|
Java Maven
java项目中jar启动执行日志报错:no main manifest attribute, in /www/wwwroot/snow-server/z-server.jar-jar打包的大小明显小于正常大小如何解决
在Java项目中,启动jar包时遇到“no main manifest attribute”错误,且打包大小明显偏小。常见原因包括:1) Maven配置中跳过主程序打包;2) 缺少Manifest文件或Main-Class属性。解决方案如下:
java项目中jar启动执行日志报错:no main manifest attribute, in /www/wwwroot/snow-server/z-server.jar-jar打包的大小明显小于正常大小如何解决
|
6月前
|
存储 数据采集 数据处理
【Flume拓扑揭秘】掌握Flume的四大常用结构,构建强大的日志收集系统!
【8月更文挑战第24天】Apache Flume是一个强大的工具,专为大规模日志数据的收集、聚合及传输设计。其核心架构包括源(Source)、通道(Channel)与接收器(Sink)。Flume支持多样化的拓扑结构以适应不同需求,包括单层、扇入(Fan-in)、扇出(Fan-out)及复杂多层拓扑。单层拓扑简单直观,适用于单一数据流场景;扇入结构集中处理多源头数据;扇出结构则实现数据多目的地分发;复杂多层拓扑提供高度灵活性,适合多层次数据处理。通过灵活配置,Flume能够高效构建各种规模的数据收集系统。
125 0
|
3月前
|
JSON Java 数据库
SpringBoot项目使用AOP及自定义注解保存操作日志
SpringBoot项目使用AOP及自定义注解保存操作日志
68 1
|
6月前
|
JSON 中间件 Go
go语言后端开发学习(四) —— 在go项目中使用Zap日志库
本文详细介绍了如何在Go项目中集成并配置Zap日志库。首先通过`go get -u go.uber.org/zap`命令安装Zap,接着展示了`Logger`与`Sugared Logger`两种日志记录器的基本用法。随后深入探讨了Zap的高级配置,包括如何将日志输出至文件、调整时间格式、记录调用者信息以及日志分割等。最后,文章演示了如何在gin框架中集成Zap,通过自定义中间件实现了日志记录和异常恢复功能。通过这些步骤,读者可以掌握Zap在实际项目中的应用与定制方法
206 1
go语言后端开发学习(四) —— 在go项目中使用Zap日志库
|
6月前
|
开发框架 .NET Docker
【Azure 应用服务】App Service .NET Core项目在Program.cs中自定义添加的logger.LogInformation,部署到App Service上后日志不显示Log Stream中的问题
【Azure 应用服务】App Service .NET Core项目在Program.cs中自定义添加的logger.LogInformation,部署到App Service上后日志不显示Log Stream中的问题
|
6月前
|
消息中间件 监控 Kafka
Filebeat+Kafka+Logstash+Elasticsearch+Kibana 构建日志分析系统
【8月更文挑战第13天】Filebeat+Kafka+Logstash+Elasticsearch+Kibana 构建日志分析系统
311 3
|
6月前
|
XML Java Maven
logback在springBoot项目中的使用 springboot中使用日志进行持久化保存日志信息
这篇文章详细介绍了如何在Spring Boot项目中使用logback进行日志记录,包括Maven依赖配置、logback配置文件的编写,以及实现的日志持久化和控制台输出效果。
logback在springBoot项目中的使用 springboot中使用日志进行持久化保存日志信息
|
7月前
|
开发框架 NoSQL 前端开发
在Winform项目和Web API的.NetCore项目中使用Serilog 来记录日志信息
在Winform项目和Web API的.NetCore项目中使用Serilog 来记录日志信息