如何控制客户端库中的日志记录级别?

发布于 2024-08-13 07:39:00 字数 291 浏览 19 评论 0原文

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

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

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

We'd like clients to be able to control logging levels in our client JAR. What is the best way to do this?

Currently we just have a handful of log statements that write to System.out. I realize that using Log4J would solve this problem although one of our biggest clients doesn't use Log4J and uses their own custom logging implementation. Is there a clean approach to let them control logging in our client jar?

Options we've thought of: clients could explicitly set properties on client jar classes to set logging level (don't like this), our client jar could read an optional .properties file that clients can put on their classpath (better but still a bit of a pain).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

漆黑的白昼 2024-08-20 07:39:00

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

如果您的客户端使用其他日志记录框架,则可以存在通往 slf4j 的桥梁,或者您可以编写自己的框架。

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

Don't use a concrete logging framework, use SLF4J, so you can exchange logging if you need to. I'd start at first converting your own System.out's to the included java.util.logging. It's pretty straight forward and convenient for most needs.

If your client uses another logging framework, there either exists a bridge to slf4j or you can write your own.

EDIT: We've used it to streamline the logging of external libraries which used LOG4J into java.util.logging which we use.

伤感在游骋 2024-08-20 07:39:00

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

Take a look at Apache commons-logging. It provides a thin isolation layer that can let your code use a consistent API and then plug in a lower-layer logger (including Log4J or another).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文