如何解决无法使用自定义日志处理程序java.util.loggingspringboot
我遇到了 springboot 应用程序的一个日志问题。 无法加载自定义日志处理程序(ClassNotFoundException)。
Spring Boot Uber jar 配置
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>test.DigRunner</mainClass>
<layout>JAR</layout>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
这是spring应用程序的启动脚本
exec ${JVM_PATH} -Djava.util.logging.config.file=/temp/logging.properties -jar service.jar
Logging.properties
handlers=utilities.enhancedlogger.handler.file.RollingDayBufferedFileHandler,utilities.enhancedlogger.handler.file.RollingDayFileHandler
level=SEVERE
utilities.enhancedlogger.handler.file.RollingDayBufferedFileHandler.level=INFO
utilities.enhancedlogger.handler.file.RollingDayBufferedFileHandler.buffer.capacity=10000
utilities.enhancedlogger.handler.file.RollingDayBufferedFileHandler.limit=50971520
utilities.enhancedlogger.handler.file.RollingDayBufferedFileHandler.pattern=/temp/dig-debug.log
utilities.enhancedlogger.handler.file.RollingDayBufferedFileHandler.formatter=utilities.enhancedlogger.formatter.Formatter
当我启动 spring 应用程序时,它给了我下面的错误。
java.lang.classNotFoundException: utilities.enhancedlogger.handler.file.RollingDayBufferedFileHandler
at java.net.urlclassloader.findClass(urlclassloader.java:382)
at java.lang.classLoader.loadClass(ClassLoader.java:418)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
尝试使用以下类加载器代码手动加载类。但还是一样的异常
Class.forName("utilities.enhancedlogger.handler.file.RollingDayBufferedFileHandler",true,ClassLoader.getSystemClassLoader());
感谢任何帮助。如果需要任何其他信息,请告诉我。提前致谢
解决方法
您正在执行正确的故障排除,因为您应该查看您的类是否对系统类加载器可见。但是,根据您的问题,您引用了 3 个不同的包:
-
wfplat.utilities.enhancedlogger...
, utilities.enhancedlogger...
com.ge.med.ct.wfplat.utilities.enhancedlogger...
第一步应该是清理它并使您的所有测试和配置文件指向完全限定的类名并重新测试。
那时,如果您的手动测试失败,则处理程序不在系统类路径中或未捆绑在 jar 中。检查类路径以查看包含处理程序的 jar 是否在系统类路径上。使用您喜欢的 zip 工具解压 jar 以查看是否包含二进制类文件,并且它是正确的包名称。
LogManager 将only load handlers from the system class path。这意味着您需要为日志处理程序制作一个特定的 jar 并将其放在系统类路径上。如果您的处理程序无法从系统类路径加载,那么您必须手动创建它并使用 Spring Boot 中的代码将其添加到您的应用程序记录器中。
,我必须在包含处理程序的引导类路径中添加 jar。更改后的脚本在这里并且工作正常!!!
exec ${JVM_PATH} -Xbootclasspath/a:enhancedlogger-extensions-ifc-jar:enhancedlogger-extensions.jar -Djava.util.logging.config.file=/temp/logging.properties -jar service.jar
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。