0

我在我的应用程序中使用SLF4jLogback。现在我要求我的应用程序应该嵌入到其他应用程序中。这意味着,该应用程序可以用作其他应用程序中的库。除了 Logger 部分外,一切都按预期工作。我只是不知道如何完全禁用Logback(这是因为用户应该带上自己的记录器实现)。我还尝试查找是否可以以Logback“委托模式”之类的方式运行以允许其他SLF4j实现挂钩的信息,但我没有找到任何东西。

另一种方法是编写一个自定义的类加载器,它在应用程序启动时摆脱 logback,但这非常复杂(afaik 在应用程序运行时,如果没有黑客从类加载器中删除加载的类是不可能的)。

有没有人认为可以在不将我的应用程序拆分为不同模块的情况下做到这一点?

4

1 回答 1

0

在编译时,您的类路径中应该只有 slf4j-api。

在运行时,您可以选择在运行时类路径中添加 logback,slf4j 将使用它。

如果其他应用程序使用例如 log4j,他们需要添加 slf4j-log4j 而不是 logback,以及 slf4j-api 和您的模块。

如果他们使用 java.util.logging,他们需要添加 slf4j-jdk14 而不是 logback。

在这两种情况下,您可能想告诉他们您使用哪些日志记录类别,以便他们可以将其添加到他们的 log4j 或 java.util.logging 配置中。

于 2012-10-02T15:06:53.140 回答