1

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

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

有些东西让我对这个 slf4j 的事情感到困惑。如果他得到我的库,而我只是提供,假设是 slf4j-api,则会引发错误,导致 SLF4J 绑定不包括在内。解决方案可能是他必须自己包含绑定,问题是他是否愿意阅读自述文件以获取这些关键信息。

如果我包含一个“标准”-slf4j 绑定(例如简单的绑定),则应用程序不能“覆盖”它,因为类路径上只允许一个绑定。不再灵活

所以我想只使用 log4j 而忘记所有其他日志记录框架。我可能想在这个问题上变得复杂,也许有人可以帮助我解决这个问题?

4

1 回答 1

6

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

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

通过在你的库中打包 log4j,你违背了日志外观的目的。这样做将不允许用户选择 slf4j 实现。

于 2012-07-30T20:10:39.467 回答