我正在使用Jetty很长一段时间。这是我第一次收到此错误,并且收到了很多此错误,导致服务器响应不佳。 我只使用Jetty 9.3.9来处理websockets连接。
Exception in thread "qtp147268537-19366" java.lang.NoSuchMethodError: org.slf4j.spi.LocationAwareLogger.log(Lorg/slf4j/Marker;Ljava/lang/String;ILjava/lang/String;[Ljava/lang/Object;Ljava/lang/Throwable;)V
at org.eclipse.jetty.util.log.JettyAwareLogger.log(JettyAwareLogger.java:607)
at org.eclipse.jetty.util.log.JettyAwareLogger.warn(JettyAwareLogger.java:431)
at org.eclipse.jetty.util.log.Slf4jLog.warn(Slf4jLog.java:69)
at org.eclipse.jetty.util.log.Slf4jLog.warn(Slf4jLog.java:64)
at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:646)
at java.lang.Thread.run(Thread.java:745)
在1小时内出现了很多错误,导致服务器不接受任何新连接,但目前建立的连接运行良好。
在深入研究问题后,我认为这与此有关
_logger.log(marker, FQCN, level, msg, null, t);
我正在使用slf4j-api-1.5.3.jar和slf4j-log4j12-1.5.3.jar。我是否需要将slf4j升级到更新版本,因为它可能会破坏我程序中的其他一些东西?如果是,所需的最低版本是多少?或问题来自其他问题?
答案 0 :(得分:1)
是的,您需要升级您的slf4j版本。
建议至少使用版本1.6.6的slf4j。 (随意使用更新的东西,比如版本1.7.12)
添加了org.slf4j.api.LocationAware
类来支持几个slf4j网桥:jcl-over-slf4j,jul-to-slf4j和log4j-over-slf4j,以及包装的记录器。
Jetty的Slf4jLog实现使用包装的记录器,因此它需要这个类/方法存在。