2

我正在编写一个库,并希望主要使用 perf4j 来公开 JMX 性能计数器。
根据此处的说明http://perf4j.codehaus.org/devguide.html perf4j 旨在与 log4j 一起使用,但是由于我正在编写一个库,因此我无法控制 log4j 的使用,该库的用户可能或者可能不希望使用 log4j 并且我不想将此作为要求。
有没有办法使用 perf4j,特别是在不需要使用 log4j 的情况下以编程方式公开 perf4j JMX 计数器?

4

2 回答 2

1

我的回答或多或少。Perf4J 需要在某处输出其测量值,而这某处是一个日志框架。Perf4J 是为与 Log4J 兼容的框架一起工作而构建的,但您可以更改底层的日志记录框架。例如,您可以选择使用 SFL4J 或 Commons Logging。

这是一个仅依赖于 perf4j jar 的示例:

import org.perf4j.LoggingStopWatch;
import org.perf4j.StopWatch;

public class Perf4JEx {
    public static void main (String[] args) {
        StopWatch stopWatch = new LoggingStopWatch();
        // for demo purposes just sleep
        Thread.sleep(170);
        stopWatch.stop("timing");
    }
}

此代码会将测量结果输出到标准输出(默认的极简日志框架)。

开始[1310075342634] 时间[171] 标签[时间]

请注意,Perf4J 使用 log4j 配置文件并且还支持 JMX。

于 2011-07-07T21:53:33.643 回答
0

我会说是的。我按照你发布的链接,注意到第一段说

一些 Perf4J 工具需要额外的依赖项(例如,自定义 log4j 附加程序要求 log4j jar 也位于您的类路径中)。

这向我表明,在你的类路径中没有 log4j 是正常的。

于 2010-02-28T05:44:11.267 回答