使用perf4J Profiled注释而不使用其他库(例如log4j)

时间:2016-07-24 12:44:28

标签: java perf4j

使用perf4J时,此代码运行良好:

StopWatch stopWatch = new LoggingStopWatch();
stopWatch.stop("example1", "custom message text");

但是在使用@Profiled时,如何输出或获取度量,使用最少的代码

@Profiled(tag = "dynamicTag_{$0}")
public void boucle(int k)
{
    // My code to profile
}

1 个答案:

答案 0 :(得分:1)

使用@Profiled注释向代码添加秒表时,通常会使用AspectJ加载时间编织(LTW)在加载/运行时检测代码,这会在注释周围添加秒表启动/停止和记录方法

使用哪种日志库/ API(log4j,slf4j,commons-logging,JUL)取决于您在配置LTW的org.perf4j.aop.ProfiledTimingAspect中配置的aop.xml的特定实例。例如,这个配置:

<aspectj>
  <!--
    We only want to weave in the log4j TimingAspect into the @Profiled classes.
    Note that Perf4J provides TimingAspects for the most popular Java logging
    frameworks and facades: log4j, java.util.logging, Apache Commons Logging
    and SLF4J. The TimingAspect you specify here will depend on which logging
    framework you wish to use in your code.
  -->
  <aspects>
    <aspect name="org.perf4j.log4j.aop.TimingAspect"/>
    <!-- if SLF4J/logback use org.perf4j.slf4j.aop.TimingAspect instead -->
  </aspects>

  <weaver options="-verbose -showWeaveInfo">
    <!--
      Here is where we specify the classes to be woven. You can specify package
      names like com.company.project.*
    -->
    <include within="ProfiledExample"/>
  </weaver>
</aspectj>

...使用org.perf4j.log4j.aop.TimingAspect,因此秒表将记录到配置的Log4J秒表记录器中。如果要避免使用第三方库,可以为JUL JDK记录器更改此项。