我的项目使用handlebas-proto将模板绑定到json。此外,我正在尝试使用logstash logback编码器以Json的形式登录logstash。以下是我的编译依赖项(以及其他依赖项)
compile 'net.logstash.logback:logstash-logback-encoder:4.6'
compile 'com.github.jknack:handlebars-proto:4.0.5'
如果我删除了handlerbars依赖性日志记录,效果会很好。如果有车把,我会收到以下警告:
SLF4J:类路径包含多个SLF4J绑定。SLF4J:已找到绑定[jar:file:/C:\Users/manish/.gradle/catches/modules-2/files-2.1/com.github.jknack/handlebas-proto/4.0.5/5979737344d99e0d8b482e828f247ae86fd0113/handlebas-proto-4.05.jar!.org/slf4j/impl/StaticLoggerBinder.class]SLF4J:在中发现绑定[jar:file:/C:\Users/manish/.gradle/catches/modules-2/files-2.1/ch.qos.logback/logback-classic/1.1.6/665e3de72f19ec66ac67d82612d7b8e6b3de3cd0/logback-classic-1.1.6.jar!.org/slf4j/impl/StaticLoggerBinder.class]SLF4J:请参阅http://www.slf4j.org/codes.html#multiple_bindings对于解释
后面跟着错误:
无法实例化[c.hqos.logback.classic.LogerContext]已报告异常:java.lang.NoSuchMethodError:chrqos.logback.core.spi.ContextAwareBase.(Lch/qos/logback/core/spi/ContextAware;)Vnet.logstash.logback.composite.CompositeJsonFormatter。(CompositeJsonFormatter.java:106)在net.logstash.logback.composite.loggingeevent.LoggingEventCompositeJson格式化程序。(LoggingEventCompositeJsonFormatter.java:28)在net.logstash.logback.LogstashFormatter。(LogstashFormatter.java:122)在net.logstash.logback.LogstashFormatter。(LogstashFormatter.java:118)在net.logstash.logback.LogstashFormatter。(LogstashFormatter.java:114)在net.logstash.logback.encoder LogstashEncoder.createFormatter(logstash编码器.java:31)在net.logstash.logback.encoder。CompositeJsonEncoder。(CompositeJson encoder.java:48)在net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder。(LoggingEventCompositeJsonEncoder.java:23)在net.logstash.logback.encoder。LogstashEncoder。(LogstashEncoder.java:27)在sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native方法)sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessor Impl.java:57)在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessor Impl.java:45)位于java.lang.reflect.Constructure.newInstance(Constructor.java:526)位于java.lang.Class.newInstance(Class.java:379)ch.qos.logback.core.joran.action.NestedComplexPropertyA.begin(NestedComplexPropertyA.java:122)在ch.qos.logback.core.joran.spi.解释器.callBeginAction(解释器.java:276)在ch.qos.logback.core.joran.spi.解释器.startElement(解释器.java:148)在ch.qos.logback.core.joran.spi.解释器.startElement(解释器.java:130)在ch.qos.logback.core.joran.spi.EventPlayer.play(EventPlayer.java:50)
我试图将slf4j排除为手把的传递依赖项,但这也于事无补。
compile
('com.github.jknack:handlebars-proto:4.0.5'){
exclude module: 'slf4j-api'
}
提前感谢您的帮助。如果需要更多细节,请告诉我。
错误消息是因为handlebas proto jar包含org.slf4j.impl.StaticLoggerBinder
的实现,这意味着它有一个日志记录实现。您还试图添加自己的Logback日志记录实现,由于SLF4J不能同时使用两个日志记录系统,所以这很令人抱怨。
我不熟悉handlebars项目,但我猜您拥有的库是一个完整的应用程序,其中包括一个日志系统,而不是真正设计为被另一个项目用作依赖项。也许有一个不同的版本可用,那就是库,而它不试图包括自己的日志实现?