【发布时间】:2019-01-04 22:11:30
【问题描述】:
我有一个storm项目,我使用logback.xml添加了一些自定义logback配置(添加了将日志写入索引的配置)。当我构建 jar 并将其部署在集群上时,我收到此类 StaticLoggerBinder.class 的多个绑定错误,因为它同时存在于我的 jar 和storm自己的依赖项列表中。以下是错误
SLF4J: Found binding in [jar:file:/usr/lib/storm/apache-storm-1.2.2/lib/log4j-slf4j-impl-2.8.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/app/test/test-storm-0.0.1-SNAPSHOT-jar-with-dependencies.jar!/org/slf4j/impl/StaticLoggerBinder.class]
这会导致我的任何自定义配置都不会被拾取。
当我从 Storm 的 lib 文件夹中删除冲突的 jar 时,我的 logback.xml 配置被反映并且我的日志被写入索引而没有问题。当我部署显示我添加的配置的拓扑时,我也会在开始时看到这些日志
22:05:13,818 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback.xml] at [jar:file:/app/test/test-storm-0.0.55-SNAPSHOT-jar-with-dependencies.jar!/logback.xml]
22:05:13,839 |-INFO in ch.qos.logback.core.joran.spi.ConfigurationWatchList@19bb089b - URL [jar:file:/app/test/test-storm-0.0.1-SNAPSHOT-jar-with-dependencies.jar!/logback.xml] is not of type file
22:05:14,094 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender]
22:05:14,097 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [CONSOLE]
22:05:14,102 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property
22:05:14,125 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [com.splunk.logging.HttpEventCollectorLogbackAppender]
22:05:14,126 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [SPLUNK]
22:05:14,132 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [com.test] to INFO
22:05:14,132 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting additivity of logger [com.test] to false
22:05:14,132 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [SPLUNK] to Logger[com.test]
22:05:14,133 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [CONSOLE] to Logger[com.test]
22:05:14,133 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - Setting level of ROOT logger to INFO
22:05:14,133 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [CONSOLE] to Logger[ROOT]
22:05:14,133 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration.
但是,我不想走这条路线,因为它无法维护,所以我决定使用maven-shade-plugin 将org.slf4j.impl 重新定位到org.shaded.slf4j.impl。现在,当我部署拓扑时,不再有多个绑定,但是我的 logback.xml 没有得到尊重,我的配置都没有反映,也没有看到上述消息。它可能会退回到使用不同的记录器。
如何在部署拓扑时反映我的配置?请帮忙。 (风暴版本 1.2.2)
【问题讨论】:
-
你能和我们分享你的 pom.xml 吗?或您的 Maven 项目的演示。我认为你的依赖有一个错误。
标签: maven logback apache-storm maven-shade-plugin