外部库的Logging-Strategy(slf4j?)

noi*_*rcc 1 java logging log4j jar slf4j

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

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

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

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

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

Isa*_*lst 5

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

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

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