我正在编写一个库,并希望使用perf4j来主要公开JMX性能计数器 根据这里的说明http://perf4j.codehaus.org/devguide.html perf4j应该与log4j一起使用,但是由于我正在编写一个库,我无法控制log4j的使用,因此库的用户可能希望也可能不希望使用log4j和我不想要这个要求 有没有办法使用perf4j,专门以编程方式公开perf4j JMX计数器而不需要使用log4j?
答案 0 :(得分: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。
答案 1 :(得分:0)
我会说是的。我按照你发布的链接注意到第一段说
一些Perf4J工具需要 其他依赖项(例如, 自定义log4j appenders需要 log4j jar也在你的 类路径)。
这表明我没有在你的类路径中使用log4j是正常的事情。