java - Logstash logback 编码器因 java.util.ServiceConfigurationError 失败(jackson.datatype.jsr310.JavaTimeModule 无法实例化)

标签 java spring-boot logstash logback

我正在尝试在我的 springbootapp (2.4.8) 中进行基于 JSON 的日志记录。我已按照 github 中提到的说明进行操作以及其他一些文档和 StackOverflow 相关问题。但是,我无法解决该问题。

下面是我得到的异常(exception):

net.logstash.logback.encoder.LogstashEncoder@4fcee388 中出现错误 - 动态加载 Jackson 模块时发生错误java.util.ServiceConfigurationError:com.fasterxml.jackson.databind.Module:Provider com. fastxml.jackson.datatype.jsr310.JavaTimeModule 无法实例化

我确实确保添加了 logstash-logback-encoder 依赖项,并且 logback 依赖项>= 1.2.0(正在使用 1.2.3)。有关详细信息,请参阅依赖关系树的摘录。

[INFO] --- maven-dependency-plugin:3.1.2:tree (default-cli) @ <my-spring-boot-app> --
[INFO] +- org.slf4j:slf4j-api:jar:1.7.30:compile
[INFO] +- net.logstash.logback:logstash-logback-encoder:jar:6.6:compile
[INFO] +- ch.qos.logback:logback-core:jar:1.2.3:compile
[INFO] +- ch.qos.logback:logback-classic:jar:1.2.3:compile
[INFO] +- ch.qos.logback:logback-access:jar:1.2.3:compile
[INFO] +- com.fasterxml.jackson.core:jackson-databind:jar:2.9.3:compile
[INFO] +- com.fasterxml.jackson.core:jackson-core:jar:2.9.3:compile
[INFO] +- com.fasterxml.jackson.core:jackson-annotations:jar:2.9.3:compile

请参阅相应的 src/main/resources/logback.xml:

<configuration>
    <appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="net.logstash.logback.encoder.LogstashEncoder"/>
    </appender>
    <logger name="jsonLogger" additivity="false" level="DEBUG">
        <appender-ref ref="consoleAppender"/>
    </logger>
    <root level="INFO">
        <appender-ref ref="consoleAppender"/>
    </root>
</configuration>

以下是运行时异常:

   ERROR in net.logstash.logback.encoder.LogstashEncoder@4fcee388 - Error occurred while dynamically loading jackson modules java.util.ServiceConfigurationError: com.fasterxml.jackson.databind.Module: Provider com.fasterxml.jackson.datatype.jsr310.JavaTimeModule could not be instantiated

下面是依赖项对应的 pom.xml 文件定义:

<properties>
    <java.version>11</java.version>
    <scribejava.version>5.6.0</scribejava.version>
    <ch.qos.logback.version>1.2.3</ch.qos.logback.version>
</properties>



<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.30</version>
</dependency>

<dependency>
    <groupId>net.logstash.logback</groupId>
    <artifactId>logstash-logback-encoder</artifactId>
    <version>6.6</version>
</dependency>

<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-core</artifactId>
    <version>${ch.qos.logback.version}</version>
</dependency>
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>${ch.qos.logback.version}</version>
</dependency>
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-access</artifactId>
    <version>${ch.qos.logback.version}</version>
</dependency>

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>${com.fasterxml.jackson.core.version}</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>${com.fasterxml.jackson.core.version}</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-annotations</artifactId>
    <version>${com.fasterxml.jackson.core.version}</version>
</dependency>

最佳答案

我想我已经明白了。结果发现这是一个依赖问题。

(基本上,在logstash 6.6中,jackson.core 2.9.3抛出了上述错误。当我转移到2.12.1时,一切开始工作。下面是正在使用的版本的实际详细信息 - 摘自依赖树)

[INFO] +- org.slf4j:slf4j-api:jar:1.7.30:compile
[INFO] +- net.logstash.logback:logstash-logback-encoder:jar:6.6:compile
[INFO] +- ch.qos.logback:logback-core:jar:1.2.3:compile
[INFO] +- ch.qos.logback:logback-classic:jar:1.2.3:compile
[INFO] +- ch.qos.logback:logback-access:jar:1.2.3:compile
[INFO] +- com.fasterxml.jackson.core:jackson-databind:jar:2.12.1:compile
[INFO] +- com.fasterxml.jackson.core:jackson-core:jar:2.12.1:compile
[INFO] +- com.fasterxml.jackson.core:jackson-annotations:jar:2.12.1:compile

关于java - Logstash logback 编码器因 java.util.ServiceConfigurationError 失败(jackson.datatype.jsr310.JavaTimeModule 无法实例化),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68438987/

相关文章:

javascript - 如何将 AWS Lambda 中的示例从 javascript 转换为 Java?

angular - 如何在 docker env 中使用 nginx 反向代理来通信 UI 和后端应用程序

elasticsearch - 多字可视化

elasticsearch - Logstash管道无法与csvfile一起使用

java - 如何在其中一个模块中构建没有主类的多模块 Maven 项目

Java - 参数没有按预期传递到函数中

spring - 如何在Spring Boot的嵌入式tomcat中展开war?

用于 Logstash 的 Java 过滤器

java - itext7定位异常

java - 在 Spring Boot 应用程序中将 mongo db 升级到 3.2