当前位置: 首页 > 知识库问答 >
问题:

Logstash-Logback编码器:“IllegalAccesserror:无法访问类[…]”

胡鸿羲
2023-03-14

我尝试使用Logstash tcp套接字追加器将日志从java应用程序发送到Logstash。java应用程序。已经可以使用logback 1.1.9(slf4j)和其他追加器。

现在,我将以下行添加到logback-test.xml中:

<configuration>
    <appender name="logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <destination>[IP]:5010</destination>
        <encoder class="net.logstash.logback.encoder.LogstashEncoder">
            <fieldNames>
                <message>log_msg</message>
            </fieldNames>
        </encoder>
        <keepAliveDuration>5 minutes</keepAliveDuration>
    </appender>

<root>
<level value="info"/>
<appender-ref ref="logstash" />
</root>
</configuration>
Exception in thread "main" java.lang.IllegalAccessError: failed to access class ch.qos.logback.core.status.OnPrintStreamStatusListenerBase from class net.logstash.logback.status.LevelFilteringStatusListener (ch.qos.logback.core.status.OnPrintStreamStatusListenerBase and net.logstash.logback.status.LevelFilteringStatusListener are in unnamed module of loader 'app')
    at net.logstash.logback.status.LevelFilteringStatusListener.setDelegate(LevelFilteringStatusListener.java:67)
    at net.logstash.logback.appender.AsyncDisruptorAppender.start(AsyncDisruptorAppender.java:370)
    at net.logstash.logback.appender.AbstractLogstashTcpSocketAppender.start(AbstractLogstashTcpSocketAppender.java:1009)
    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:158)
    at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:145)
    at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:103)
    at ch.qos.logback.core.joran.GenericConfigurator.doConfigure(GenericConfigurator.java:53)
    at ch.qos.logback.classic.util.ContextInitializer.configureByResource(ContextInitializer.java:75)
    at ch.qos.logback.classic.util.ContextInitializer.autoConfig(ContextInitializer.java:150)
    at org.slf4j.impl.StaticLoggerBinder.init(StaticLoggerBinder.java:84)
    at org.slf4j.impl.StaticLoggerBinder.<clinit>(StaticLoggerBinder.java:55)
    at org.slf4j.LoggerFactory.bind(LoggerFactory.java:150)
    at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:124)
    at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:412)
    at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:357)
    at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:383)
input {
   tcp {
      mode => "server"
      port => 5010
      codec => json
   }
}

共有1个答案

彭星津
2023-03-14

您可以通过应用以下任一解决方案来避免遇到的异常:

A)使用登录版本>=1.1.10

比pom文件中指定的版本更旧的版本可能有效,但pom文件中的版本是测试所针对的版本。

 类似资料:
  • 我的logback.xml如下: 当我查看wireshark的输出时,我只看到记录的JSON(没有给出PRI头字段) 如果切换到标准logback Syslog appender(非JSON输出)

  • 问题内容: 我有两节课。 类具有受保护的方法,是的实例。 Class 与class在同一包中。 我正在尝试访问,但正在获取… 怎么了? 问题答案: 编译器应该捕获这样的错误。当您显然在运行时得到此消息时,发生了一些奇怪的事情。可能您已更改了源代码,但已完全重新编译。 另一个潜在但晦涩的问题是通过不同的类加载器加载类。即使包名称相同,从不同的类加载器加载的类也将位于不同的包中(以与由不同的类加载器加

  • 我正在尝试为基于spring的tomcat应用程序配置logback访问。在我的pom中添加了以下行。xml文件: 我还在pom文件的tomcat插件配置中添加了这个。 我已将资源文件放在以下位置:src/主/资源/日志回溯.xml src/主/资源/日志回溯访问.xml 但是,虽然日志.xml工作,但tomcat无法获取日志回溯访问.xml文件。如何使用我的tomcat6插件附加访问xml文件?

  • 尝试使用spring-cloud-stream-binder-kstream 1.3.0。发布版本 pom。xml: 日志跟踪: 配置类: application.properties: 附注:注意同样的事情适用于1.0.0。BUILD-SNAPSHOT在此存储库中共享https://github.com/mbogoevici/spring-cloud-stream-binder-kstream

  • 问题内容: 为什么在Java中,即使没有抛出异常,我们也可以捕获它,但是却不能捕获它的子类(“ unchecked” 及其子类除外)。示例代码: 有任何想法吗? 问题答案: 任何 代码都可以引发A。换句话说,编译器无法轻松预测可以抛出哪种代码。阿可通过捕获块。 __ 但是,这是一个检查的异常- 只有声明为抛出该异常的方法调用才可以这样做。编译器可以(合理地)确信除非有声明将其抛出的方法调用,否则它