【问题标题】:How to control logging level in client library?如何控制客户端库中的日志记录级别?
【发布时间】:2009-12-02 03:15:21
【问题描述】:

我们希望客户端能够控制客户端 JAR 中的日志记录级别。最好的方法是什么?

目前我们只有少数写入 System.out 的日志语句。我意识到使用 Log4J 可以解决这个问题,尽管我们最大的客户之一不使用 Log4J 并且使用他们自己的自定义日志记录实现。有没有一种干净的方法可以让他们控制我们客户端 jar 中的日志记录?

我们想到的选项:客户端可以显式设置客户端 jar 类的属性以设置日志记录级别(不喜欢这样),我们的客户端 jar 可以读取客户端可以放在其类路径中的可选 .properties 文件(更好但还是有点痛)。

【问题讨论】:

    标签: java logging log4j client-library


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      看看 Apache commons-logging。它提供了一个薄隔离层,可以让您的代码使用一致的 API,然后插入较低层的记录器(包括 Log4J 或其他)。

      【讨论】:

      • 我会推荐 slf4j 而不是 commons-logging。
      • 我不熟悉。我想我会查一下。
      • 我还推荐 slf4j 而不是公共日志记录。公共日志记录可能导致类加载器问题:articles.qos.ch/classloader.html
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-01
      • 2016-05-22
      • 1970-01-01
      • 1970-01-01
      • 2013-11-11
      • 2013-04-09
      • 1970-01-01
      相关资源
      最近更新 更多