Perf4j 是一个性能分析和监控组件,用于替代:
long start = System.currentTimeMillis();
// do someting
log.info("ms for block n was: " + (System.currentTimeMillis() - start));
并提供统计和分析功能,输出优美的统计结果,并能结合Google Char、JMX、Servlet、
annotation
等高级玩意。
使用也很简单:
StopWatch stopWatch = new Slf4JStopWatch("mytag1");
// do someting
stopWatch .stop();
当前(0.9.13)只提供了基于log4j的配置,我用logback,幸好有人已经提供了logback的实现 ,发挥拿来主义精神。
logback.xml的配置:
<!--统计记录输出文件--> <appender name="perf4jFile" class="ch.qos.logback.core.FileAppender"> <file>pref.log</file> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>%m%n</pattern> </encoder> </appender> <!--获取所有的StopWatch 信息并处理--> <appender name="perf4j" timeSlice="1000" class="xx.showcase.perf4j.Slf4JAsyncCoalescingStatisticsAppender"> <!--时间间隔--> <param name="timeSlice" value="1000" /> <appender-ref ref="perf4jFile"/> </appender> <!--org.perf4j.TimingLogger是StopWathc的日志名,additivity false表示只写到perf4j文件--> <logger name="org.perf4j.TimingLogger" additivity="false"> <level value="INFO" /> <appender-ref ref="perf4j" /> </logger>
此配置和xml的log4j配置几乎是一致的。
程序定时会把统计结果写到文件中,Over!
参考:
http://perf4j.codehaus.org/devguide.html