如何控制客户端库中的日志记录级别?
我们希望客户能够控制我们的客户端 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
不要使用具体的日志框架,使用 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.
看一下 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).