外部库的Logging-Strategy(slf4j?)

时间:2012-07-30 14:46:08

标签: java logging jar log4j slf4j

我想提供一个客户端库,用于将rest-request包装到服务器并记录错误,以便客户端可以在他的应用程序中使用它并查看日志。 (还有一个问题,我是否应该只记录错误或重新抛出它。当我使用异步调用(多线程)时,这可能非常棘手..)

我读到slf4j可能会有所帮助,因为使用该库的客户端可以选择他喜欢的日志框架。

有些人对这个slf4j事情感到困惑。如果他得到我的库并且我只是提供,让我们说slf4j-api,将抛出错误,因为不包括SLF4J绑定。解决方案可能是他必须自己包含绑定,问题是他是否愿意阅读README以获取这些重要信息。

如果我包含一个“标准”-slf4j绑定(例如简单的绑定),则应用程序无法“覆盖”此操作,因为类路径上只允许一个绑定。它不会灵活任何事情

所以我想只使用log4j并忘记其他所有日志框架。我可能会认为这个问题很复杂,也许有人可能会帮我解决这个问题?

1 个答案:

答案 0 :(得分:5)

您必须记住,您的库不会设置包装应用程序的类路径。包装应用程序将设置一个包含您的库,slf4j API库和实现库的类路径。

包装应用程序将处理要使用的slf4j实现并设置所有日志记录参数。您只需要担心使用slf4j API记录库事件。这是常见的做法,不用担心包装应用程序。

通过在您的库中打包log4j,您正在破坏日志记录外观的目的。这样做不允许用户选择slf4j实现。