Получаю исключение при использовании XML-файла журнала с JAVA-приложением Springboot.
Исправьте путь к классам вашего приложения, чтобы оно содержало
совместимые версии классов
com.github.loki4j.logback.Loki4jAppender и
ch.qos.logback.classic.spi.ILoggingEvent
у нас есть контроллер REST JAVA API Springboot, и мы пытаемся передать все журналы в потоковом режиме с помощью loki.
сведения о среде:
- Версия JAVA: 17
- Версия Springboot: 2.7.14
Код: Выделить всё
org.slf4j
slf4j-api
org.apache.logging.log4j
log4j-slf4j2-impl
2.24.3
com.github.loki4j
loki-logback-appender
1.6.0
Код: Выделить всё
private static final Logger LOG = LoggerFactory.getLogger(CloudController.class);
LOG.info("/tenant/add" + clustername + " " + url + " " + region );
Код: Выделить всё
> 2025-01-03 23:28:22.319 INFO 218845 --- [ main]
> o.k.c.s.swaggerui.SwaggerUiApplication : Starting
> SwaggerUiApplication v0.0.1-SNAPSHOT using Java 17.0.13 on CS
> with PID 218845
> (/mnt/c/Automation/oe-platform/cloudcontroller/target/swagger-ui-0.0.1-SNAPSHOT.jar
> started by root in
> /mnt/c/Automation/oe-platform/cloudcontroller/target) 2025-01-03
> 23:28:22.703 ERROR 218845 --- [ main]
> o.s.b.d.LoggingFailureAnalysisReporter :
>
> *************************** APPLICATION FAILED TO START
> ***************************
>
> Description:
>
> An attempt was made to call a method that does not exist. The attempt
> was made from the following location:
>
> com.github.loki4j.logback.Loki4jAppender.append(Loki4jAppender.java:198)
>
> The following method did not exist:
>
> 'int ch.qos.logback.classic.spi.ILoggingEvent.getNanoseconds()'
>
> The calling method's class, com.github.loki4j.logback.Loki4jAppender,
> was loaded from the following location:
>
> jar:file:/mnt/c/Automation/oe-platform/cloudcontroller/target/swagger-ui-0.0.1-SNAPSHOT.jar!/BOOT-INF/lib/loki-logback-appender-1.6.0.jar!/com/github/loki4j/logback/Loki4jAppender.class
>
> The called method's class, ch.qos.logback.classic.spi.ILoggingEvent,
> is available from the following locations:
>
> jar:file:/mnt/c/Automation/oe-platform/cloudcontroller/target/swagger-ui-0.0.1-SNAPSHOT.jar!/BOOT-INF/lib/logback-classic-1.2.12.jar!/ch/qos/logback/classic/spi/ILoggingEvent.class
>
> The called method's class hierarchy was loaded from the following
> locations:
>
> ch.qos.logback.classic.spi.ILoggingEvent: jar:file:/mnt/c/Automation/oe-platform/cloudcontroller/target/swagger-ui-0.0.1-SNAPSHOT.jar!/BOOT-INF/lib/logback-classic-1.2.12.jar!/
>
>
> Action:
>
> Correct the classpath of your application so that it contains
> compatible versions of the classes
> com.github.loki4j.logback.Loki4jAppender and
> ch.qos.logback.classic.spi.ILoggingEvent
>
> 2025-01-03 23:28:22.706 ERROR 218845 --- [ main]
> o.s.boot.SpringApplication : Application run failed
>
> java.lang.NoSuchMethodError: 'int
> ch.qos.logback.classic.spi.ILoggingEvent.getNanoseconds()'
> at com.github.loki4j.logback.Loki4jAppender.append(Loki4jAppender.java:198)
> at com.github.loki4j.logback.Loki4jAppender.append(Loki4jAppender.java:16)
> at ch.qos.logback.core.UnsynchronizedAppenderBase.doAppend(UnsynchronizedAppenderBase.java:84)
> at ch.qos.logback.core.spi.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:51)
> at ch.qos.logback.classic.Logger.appendLoopOnAppenders(Logger.java:270)
> at ch.qos.logback.classic.Logger.callAppenders(Logger.java:257)
> at ch.qos.logback.classic.Logger.buildLoggingEventAndAppend(Logger.java:421)
> at ch.qos.logback.classic.Logger.filterAndLog_0_Or3Plus(Logger.java:383)
> at ch.qos.logback.classic.Logger.log(Logger.java:765)
> at org.apache.commons.logging.LogAdapter$Slf4jLocationAwareLog.info(LogAdapter.java:454)
> at org.springframework.boot.StartupInfoLogger.logStarting(StartupInfoLogger.java:55)
> at org.springframework.boot.SpringApplication.logStartupInfo(SpringApplication.java:615)
> at org.springframework.boot.SpringApplication.prepareContext(SpringApplication.java:377)
> at org.springframework.boot.SpringApplication.run(SpringApplication.java:306)
> at org.springframework.boot.SpringApplication.run(SpringApplication.java:1303)
> at org.springframework.boot.SpringApplication.run(SpringApplication.java:1292)
> at oe.kubeapi.cloudcontroller.swagger.swaggerui.SwaggerUiApplication.main(SwaggerUiApplication.java:14)
> at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
> at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.base/java.lang.reflect.Method.invoke(Method.java:569)
> at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49)
> at org.springframework.boot.loader.Launcher.launch(Launcher.java:108)
> at org.springframework.boot.loader.Launcher.launch(Launcher.java:58)
> at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:65)
>
> Exception in thread "main" java.lang.reflect.InvocationTargetException
> at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
> at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.base/java.lang.reflect.Method.invoke(Method.java:569)
> at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49)
> at org.springframework.boot.loader.Launcher.launch(Launcher.java:108)
> at org.springframework.boot.loader.Launcher.launch(Launcher.java:58)
> at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:65)
> Caused by: java.lang.NoSuchMethodError: 'int
> ch.qos.logback.classic.spi.ILoggingEvent.getNanoseconds()'
> at com.github.loki4j.logback.Loki4jAppender.append(Loki4jAppender.java:198)
> at com.github.loki4j.logback.Loki4jAppender.append(Loki4jAppender.java:16)
> at ch.qos.logback.core.UnsynchronizedAppenderBase.doAppend(UnsynchronizedAppenderBase.java:84)
> at ch.qos.logback.core.spi.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:51)
> at ch.qos.logback.classic.Logger.appendLoopOnAppenders(Logger.java:270)
> at ch.qos.logback.classic.Logger.callAppenders(Logger.java:257)
> at ch.qos.logback.classic.Logger.buildLoggingEventAndAppend(Logger.java:421)
> at ch.qos.logback.classic.Logger.filterAndLog_0_Or3Plus(Logger.java:383)
> at ch.qos.logback.classic.Logger.log(Logger.java:765)
> at org.apache.commons.logging.LogAdapter$Slf4jLocationAwareLog.error(LogAdapter.java:433)
> at org.springframework.boot.SpringApplication.reportFailure(SpringApplication.java:821)
> at org.springframework.boot.SpringApplication.handleRunFailure(SpringApplication.java:785)
> at org.springframework.boot.SpringApplication.run(SpringApplication.java:317)
> at org.springframework.boot.SpringApplication.run(SpringApplication.java:1303)
> at org.springframework.boot.SpringApplication.run(SpringApplication.java:1292)
Код: Выделить всё
http://a6629f018a6da4430852fbfc7db64d91-1818106300.us-east-1.elb.amazonaws.com:32730/loki/api/v1/push
app=${name},host=${HOSTNAME},level=%level
true
{
"level":"%level",
"class":"%logger{36}",
"thread":"%thread",
"message": "%message",
"requestId": 100
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... pplication
Мобильная версия