【问题标题】:Can't exclude logback-classic dependency from dropwizard project无法从 dropwizard 项目中排除 logback-classic 依赖项
【发布时间】:2015-10-01 15:44:19
【问题描述】:

我正在处理一些使用 Dropwizard 0.8.2 和 sfl4j-api 1.7.12 进行日志记录的项目。我们为 slf4j 选择的实现是 slf4j-log4j12,但是我们在项目中存在多个实现时遇到了问题。

当尝试运行它时,它抱怨存在多个 SLF4J 绑定。一个是我们的,另一个是 logback-classic,它来自 dropwizard-jackson 依赖项。

问题是当我们尝试从依赖项中排除 logback-classic 时,我们在尝试启动服务器时收到以下错误:

Exception in thread "main" java.lang.NoClassDefFoundError: ch/qos/logback/classic/filter/ThresholdFilter
    at io.dropwizard.Application.<clinit>(Application.java:20)
Caused by: java.lang.ClassNotFoundException: ch.qos.logback.classic.filter.ThresholdFilter
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 1 more

人们知道有什么方法可以将 log4j 与 Dropwizard 结合使用吗?

【问题讨论】:

标签: java maven log4j slf4j dropwizard


【解决方案1】:

我认为您不能从运行时类路径中删除 logback 并使 dropwizard 使用其他一些日志记录实现(无需修改 dropwizard 的代码)。正如我们所见,io.dropwizard.Application 的静态初始化器 calls io.dropwizard.logging.LoggingFactory.bootstrap()LoggingFactory 直接使用来自 logback 的类,所以 LoggingFactory 类不会在没有 logback 的情况下初始化。

【讨论】:

    猜你喜欢
    • 2018-05-10
    • 1970-01-01
    • 2020-12-25
    • 2018-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-27
    • 1970-01-01
    相关资源
    最近更新 更多