2009-12-02 68 views
1

我们希望客户能够在客户JAR中控制日志级别。做这个的最好方式是什么?如何控制客户端库中的日志记录级别?

目前我们只有一些写入System.out的日志语句。我意识到使用Log4J可以解决这个问题,尽管我们最大的客户之一不使用Log4J并使用他们自己的自定义日志记录实现。有没有一种干净的方法让他们控制我们的客户端jar中的日志记录?我们认为的选项:客户端可以显式设置客户端jar类的属性来设置日志级别(不喜欢这样),我们的客户端jar可以读取客户端可以放在其类路径上的可选.properties文件(更好但仍然有点痛苦)。

回答

5

不要使用具体的日志记录框架,请使用SLF4J,这样您就可以在需要时交换日志记录。我首先将自己的System.out转换为包含的java.util.logging。它非常简单直观,方便大多数需求。

如果您的客户端使用另一个日志框架,那么要么存在到slf4j的桥梁,要么您可以编写自己的日志框架。

编辑:我们用它来简化使用LOG4J到我们使用的java.util.loogging的外部库的日志记录。

2

看看Apache公用日志记录。它提供了一个简单的隔离层,可以让您的代码使用一致的API,然后插入一个底层记录器(包括Log4J或其他)。

+0

我会推荐slf4j over commons-logging。 – notnoop 2009-12-02 03:30:37

+0

我不熟悉它。我想我会查找它。 – 2009-12-02 03:32:41

+0

我也推荐slf4j公共日志记录。公共日志记录可能导致类加载器问题:http://articles.qos.ch/classloader.html – Sylar 2009-12-02 08:38:45