【发布时间】:2012-04-02 04:35:10
【问题描述】:
我正在编写一个库来收集我将在不同应用程序中使用的各种功能。我希望它生成对库用户可见的日志语句,即,如果我正在构建应用程序并且正在使用库,我希望库生成对我可见的日志语句。我怎么做?由于日志文件将由应用程序的开发人员配置,我的库如何知道如何记录?
【问题讨论】:
-
看一看 Spring 框架。具体来说,依赖注入功能是对您最有用的部分。
我正在编写一个库来收集我将在不同应用程序中使用的各种功能。我希望它生成对库用户可见的日志语句,即,如果我正在构建应用程序并且正在使用库,我希望库生成对我可见的日志语句。我怎么做?由于日志文件将由应用程序的开发人员配置,我的库如何知道如何记录?
【问题讨论】:
对此的标准解决方案是:
所有这些都将允许您通过配置来配置日志文件位置。
【讨论】:
如果您正在开发一个库,其他人将包含在他们的应用程序中,您应该使用日志外观。否则,您会强制库的用户配置并包含您选择的日志框架除了他们为应用程序选择的框架。
例如,如果您使用 log4j,但使用您的库的开发人员使用 logback,他将必须包含 log4j 配置文件和 log4j jar(或使用 other measures ) 让您的图书馆开心。
Logging Facades 解决了这个问题(来自 Apache Commons Logging):
在编写库时,记录信息非常有用。然而,那里有许多日志记录实现,一个库不能将某个特定的实现强加于该库所属的整个应用程序。
Logging 包是不同日志实现之间的超薄桥梁。使用 commons-logging API 的库可以在运行时与任何日志记录实现一起使用。 Commons-logging 支持许多流行的日志实现,为其他人编写适配器是一项相当简单的任务。
或者来自 SLF4J 的推理:
Java 或 (SLF4J) 的简单日志外观作为各种日志框架的简单外观或抽象,例如java.util.logging、log4j 和 logback,允许最终用户在部署时插入所需的日志框架。
记录立面的候选人是:
【讨论】: