【问题标题】:Configuring logback with Storm使用 Storm 配置 logback
【发布时间】: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-pluginorg.slf4j.impl 重新定位到org.shaded.slf4j.impl。现在,当我部署拓扑时,不再有多个绑定,但是我的 logback.xml 没有得到尊重,我的配置都没有反映,也没有看到上述消息。它可能会退回到使用不同的记录器。

如何在部署拓扑时反映我的配置?请帮忙。 (风暴版本 1.2.2)

【问题讨论】:

  • 你能和我们分享你的 pom.xml 吗?或您的 Maven 项目的演示。我认为你的依赖有一个错误。

标签: maven logback apache-storm maven-shade-plugin


【解决方案1】:

Storm 几年前从 Logback 切换到 Log4j2。您可以通过storm/log4j2/worker.xml 和storm/log4j2/cluster.xml 文件配置Log4j2。前者为您的拓扑以及工作 JVM 配置日志记录。

你应该从你的 fat jar 中排除 logback。

另请参阅此答案https://stackoverflow.com/a/50229035/8845188

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-09
    • 1970-01-01
    • 1970-01-01
    • 2022-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多