0

Мы используем библиотеку, называемую logback-ext-cloudwatch-appender, для отправки журналов на основе журнала на AWS Cloudwatch. Вот как выглядит зависимость в нашем файле pom.xml.com.amazonaws.transform.JsonErrorUnmarshaller: метод <init> (Ljava/lang/Class;) V не найден

<dependency> 
     <groupId>org.eluder.logback</groupId> 
     <artifactId>logback-ext-cloudwatch-appender</artifactId> 
     <version>1.0-SNAPSHOT</version> 
    </dependency> 

Несколько дней назад эти ошибки начали появляться в наших журналах.

java.lang.NoSuchMethodError: com.amazonaws.transform.JsonErrorUnmarshaller: method <init>(Ljava/lang/Class;)V not found 
    at com.amazonaws.services.logs.model.transform.InvalidParameterExceptionUnmarshaller.<init>(InvalidParameterExceptionUnmarshaller.java:26) 
    at com.amazonaws.services.logs.AWSLogsClient.init(AWSLogsClient.java:280) 
    at com.amazonaws.services.logs.AWSLogsClient.<init>(AWSLogsClient.java:275) 
    at com.amazonaws.services.logs.AWSLogsClient.<init>(AWSLogsClient.java:248) 
    at org.eluder.logback.ext.cloudwatch.appender.AbstractCloudWatchAppender.doStart(AbstractCloudWatchAppender.java:100) 
    at org.eluder.logback.ext.aws.core.AbstractAwsEncodingStringAppender.start(AbstractAwsEncodingStringAppender.java:123) 
    at org.eluder.logback.ext.cloudwatch.appender.AbstractCloudWatchAppender.start(AbstractCloudWatchAppender.java:95) 
    at ch.qos.logback.ext.spring.DelegatingLogbackAppender.getDelegate(Unknown Source) 
    at ch.qos.logback.ext.spring.DelegatingLogbackAppender.append(Unknown Source) 
    at ch.qos.logback.ext.spring.DelegatingLogbackAppender.append(Unknown Source) 
    at ch.qos.logback.core.UnsynchronizedAppenderBase.doAppend(UnsynchronizedAppenderBase.java:84) 
    at ch.qos.logback.core.spi.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:48) 
    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.info(Logger.java:579) 
    (truncated) 

я узнал, что мы повышен до AWS 1.11.5, но я не смог найти каких-либо доказательств такой ошибки в этой версии.

ответ

3

Оказывается, что текущая версия Logback-доб-cloudwatch-Appender имеет переходную зависимость от конкретной версии AWS-Java-СДК-журналов 1.10.2, которая не совместит с другим AWS-Явой -sdk библиотеки 1.11.0 и выше. Мы используем ряд других aws-java-sdk-библиотек. Мы исключили такую ​​зависимость.

<dependency> 
    <groupId>org.eluder.logback</groupId> 
    <artifactId>logback-ext-cloudwatch-appender</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <exclusions> 
     <exclusion> 
      <groupId>com.amazonaws</groupId> 
      <artifactId>aws-java-sdk-core</artifactId> 
     </exclusion> 
     <exclusion> 
      <groupId>com.amazonaws</groupId> 
      <artifactId>aws-java-sdk-logs</artifactId> 
     </exclusion> 
    </exclusions> 
</dependency> 
<dependency> 
    <groupId>com.amazonaws</groupId> 
    <artifactId>aws-java-sdk-core</artifactId> 
    <version>1.11.5</version> 
</dependency> 
<dependency> 
    <groupId>com.amazonaws</groupId> 
    <artifactId>aws-java-sdk-logs</artifactId> 
    <version>1.11.5</version> 
</dependency> 

В этот момент мы начали получать еще одну ошибку.

Exception in thread "org.myorg.task.MyTask working" java.lang.NoSuchMethodError: com.amazonaws.services.logs.AWSLogsClient.createLogGroup(Lcom/amazonaws/services/logs/model/CreateLogGroupRequest;)V 
     at org.eluder.logback.ext.cloudwatch.appender.AbstractCloudWatchAppender.createLogGroup(AbstractCloudWatchAppender.java:171) 
     at org.eluder.logback.ext.cloudwatch.appender.AbstractCloudWatchAppender.doStart(AbstractCloudWatchAppender.java:107) 
     at org.eluder.logback.ext.aws.core.AbstractAwsEncodingStringAppender.start(AbstractAwsEncodingStringAppender.java:123) 
     at org.eluder.logback.ext.cloudwatch.appender.AbstractCloudWatchAppender.start(AbstractCloudWatchAppender.java:95) 
     at ch.qos.logback.core.joran.action.AppenderAction.end(AppenderAction.java:90) 
     at ch.qos.logback.core.joran.spi.Interpreter.callEndAction(Interpreter.java:309) 
     at ch.qos.logback.core.joran.spi.Interpreter.endElement(Interpreter.java:193) 
     at ch.qos.logback.core.joran.spi.Interpreter.endElement(Interpreter.java:179) 
     at ch.qos.logback.core.joran.spi.EventPlayer.play(EventPlayer.java:62) 
     at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:155) 
     at ch.qos.logback.core.sift.SiftingJoranConfiguratorBase.doConfigure(SiftingJoranConfiguratorBase.java:82) 
     at ch.qos.logback.core.sift.AbstractAppenderFactoryUsingJoran.buildAppender(AbstractAppenderFactoryUsingJoran.java:51) 
     at ch.qos.logback.core.sift.AppenderTracker.buildComponent(AppenderTracker.java:56) 
     at ch.qos.logback.core.sift.AppenderTracker.buildComponent(AppenderTracker.java:32) 
     at ch.qos.logback.core.spi.AbstractComponentTracker.getOrCreate(AbstractComponentTracker.java:124) 
     at ch.qos.logback.core.sift.SiftingAppenderBase.append(SiftingAppenderBase.java:104) 
     at ch.qos.logback.core.AppenderBase.doAppend(AppenderBase.java:82) 
     at ch.qos.logback.core.spi.AppenderAttachableImpl.appendLoopOnAppenders(AppenderAttachableImpl.java:48) 
     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.info(Logger.java:579) 

Просто исключая зависимости, не работает. Мне пришлось разветвить и перестроить банку logback-ext-cloudwatch-appender с зависимостью от текущих 1.11.5 aws-java-sdk-библиотек. Попытка использовать новые зависимости AWS с банком logback-ext-cloudwatch-appender, который был создан против старых библиотек, вызвал несоответствие в сигнатуре метода (тип возврата) createLogGroup, которая вызвала ошибку времени выполнения. Чтобы запустить это, мне пришлось изменить файлы pom.xml, а не исходный код, в моей разветвленной версии.

+5

Я интерпретировал этот ответ как «пойдите взглянуть на мои зависимости». Я обновил свои 'aws-java-sdk' и' aws-java-sdk-core' до последних версий, как показано на MavenCentral, и исправил ошибку для меня! – Shadoninja

+0

Если вы не используете logback-ext-cloudwatch-appender, как мы, который не является частью AWS, то да, я согласен. Это описание высокого уровня, как добраться до исправления. –

+1

У меня была такая же проблема в моем приложении cloudwatch. Я думаю, что я работал вокруг него, используя отражение в вызове createLogGroup: https://github.com/j256/cloudwatch-logback-appender/commit/9524f6c095139635c8128ab2ec75c5487da9bf82 – Gray

Смежные вопросы