Java库的记录器

Joã*_*iel 26 java logging packaging

我正在编写一个库来收集我将在不同应用程序中使用的各种函数.我希望它为库的用户生成可见的日志语句,即,如果我正在构建应用程序并且我正在使用该库,我希望库生成对我可见的日志语句.我怎么做?由于日志文件将由应用程序的开发人员配置,我的库如何知道如何记录?

Joe*_*e23 27

如果您正在开发一个,其他将包含在他们的应用程序中,您应该使用日志记录外观.否则,除了为应用程序选择的框架之外,您还强制库的用户配置并包含您选择的日志记录框架.

例如,如果您使用log4j,但使用您的库的开发人员使用logback,则必须包含log4j配置文件和log4j jar(或采取其他措施)以使您的库满意.

Logging Facades解决了这个问题(来自Apache Commons Logging):

编写库时,记录信息非常有用.但是,有许多日志记录实现,并且库不能在库所属的整个应用程序上强制使用特定的日志实现.

Logging包是不同日志记录实现之间的超薄桥.使用commons-logging API的库可以在运行时与任何日志记录实现一起使用.Commons-logging支持许多流行的日志记录实现,为其他人编写适配器是一项相当简单的任务.

或者SLF4J的推理:

Java或(SLF4J)的简单日志外观用作各种日志框架的简单外观或抽象,例如java.util.logging,log4j和logback,允许最终用户在部署时插入所需的日志框架.

伐木外墙的候选人是:

我个人推荐SLF4J(带Logback).

  • @RostislavMatl 啊,现在我明白了。我写了 *"he will have to include"*,你说还有其他解决方案,即桥接模块。关于观点,我认为OP是从库创建者的角度写的,因此我的答案也是这样写的。 (2认同)