我在我的应用程序中使用SLF4j
和Logback
。现在我要求我的应用程序应该嵌入到其他应用程序中。这意味着,该应用程序可以在其他应用程序中用作库。除Logger部分外,一切都按预期工作。我只是无法弄清楚如何完全禁用Logback
(这是因为用户应该使用自己的记录器实现)。我还试图找到信息,如果可以像“委托模式”那样运行Logback
以允许其他SLF4j
实现挂钩,但我没有找到任何内容。
另一种方法是编写一个自定义的Classloader,它在应用程序启动时摆脱了logback,但是这非常复杂(在应用程序运行时没有黑客从类加载器中删除加载的类是不可能的)。
有没有人看到有可能在不将我的应用程序拆分到不同模块的情况下执行此操作?
答案 0 :(得分:0)
在编译时,你的类路径中只应该有slf4j-api。
在运行时,您可以选择在运行时类路径中添加logback,slf4j将使用它。
如果其他应用程序使用例如log4j,他们需要添加slf4j-log4j而不是logback,以及slf4j-api和你的模块。
如果他们使用java.util.logging,他们需要添加slf4j-jdk14而不是logback。
在这两种情况下,您可能想告诉他们您使用哪些日志记录类别,以便他们可以将其添加到log4j或java.util.logging配置中。