0

我在使用 logstash-logback-encoder 时遇到问题。我正在使用编码器:

<appender name="FILE-ERROR" class="ch.qos.logback.core.FileAppender">
    <file>${LOG_FILE_PATH}${ERROR_FILE_NAME}</file>
    <append>true</append>
    <immediateFlush>true</immediateFlush>
    <!-- Filtro de level -->
    <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
        <level>ERROR</level>
    </filter>
    **<encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">**
        ...

我的 pom.xml 是:

    <dependency>
        <groupId>net.logstash.logback</groupId>
        <artifactId>logstash-logback-encoder</artifactId>
        <version>6.4</version>
    </dependency>
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-core</artifactId>
        <version>1.2.3</version>
    </dependency>
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.2.3</version>
    </dependency>

当我通过 intellij 运行时它工作正常,但是当我部署到 Tomcat 时出现此错误:

    10-Jul-2020 18:47:34.906 INFO [localhost-startStop-2] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
10-Jul-2020 18:47:36.910 SEVERE [localhost-startStop-2] org.apache.catalina.core.ContainerBase.addChildInternal ContainerBase.addChild: start: 
    org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/msid (16)]]
        at org.apache.catalina.util.LifecycleBase.handleSubClassException(LifecycleBase.java:440)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:198)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:743)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:719)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:705)
        at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:970)
        at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1840)
        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
        at java.util.concurrent.FutureTask.run(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)
    Caused by: java.lang.IllegalStateException: Logback configuration error detected: 
ERROR in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Could not create component [encoder] of type [net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder] java.lang.ClassNotFoundException: net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder
ERROR in ch.qos.logback.core.joran.spi.Interpreter@22:113 - no applicable action for [jsonGeneratorDecorator], current ElementPath  is [[configuration][appender][encoder][jsonGeneratorDecorator]]
ERROR in ch.qos.logback.core.joran.spi.Interpreter@23:24 - no applicable action for [providers], current ElementPath  is [[configuration][appender][encoder][providers]]
ERROR in ch.qos.logback.core.joran.spi.Interpreter@24:28 - no applicable action for [timestamp], current ElementPath  is [[configuration][appender][encoder][providers][timestamp]]
...

有没有人经历过这个?

4

2 回答 2

0

首先,感谢您的回答菲尔。是的,.war 中不存在链接到日志的一些依赖项,即使它们包含在 pom.xml 中,它们也不会在“lib”文件夹中生成。从我所见,我正在使用 intellij 的 Build 工件编译战争,我并没有生成所有的 jar,但由 maven 生成工作正常。

如果有人知道有关构建工件的任何信息,请与我们分享,但现在我可以继续这样。

非常感谢您的帮助!

于 2020-07-13T14:17:50.843 回答
0

看来这是根本原因...

ERROR in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Could not create component [encoder] of type [net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder] java.lang.ClassNotFoundException: net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder

仔细检查 logstash-logback-encoder jar 是否在您部署到 tomcat 的战争中。

于 2020-07-10T23:09:32.280 回答