最近项目打算使用perf4j进行性能监控,由于项目没有使用spring,而又不想对代码入侵过高,打算使用注解的方式进行接入。perf4j采用AspectJ库实现AOP。

具体接入方法如下:

logback.xml

<!--perf4j配置-->
<appender name="statistics" class="ch.qos.logback.core.rolling.RollingFileAppender">
<Encoding>UTF-8</Encoding>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--日志文件输出的文件名 -->
<FileNamePattern>logs/statistics.%d{yyyy-MM-dd}.log</FileNamePattern>
</rollingPolicy>
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%msg%n</pattern>
</layout>
</appender> <appender name="coalescingStatistics" class="org.perf4j.logback.AsyncCoalescingStatisticsAppender">
<timeSlice>10000</timeSlice>
<appender-ref ref="statistics"/>
</appender> <logger name="org.perf4j.TimingLogger" level="info" additivity="false">
<appender-ref ref="coalescingStatistics" />
</logger>
<!--perf4j配置结束-->

在META-INF下创建文件 aop.xml

<!DOCTYPE aspectj PUBLIC "-//AspectJ//DTD//EN"
"http://www.eclipse.org/aspectj/dtd/aspectj.dtd">
<aspectj>
<aspects>
<aspect name="org.perf4j.slf4j.aop.TimingAspect"/>
</aspects>
<weaver options="-verbose -showWeaveInfo">
<!-- Remember to include this-->
<include within="org.perf4j.slf4j.aop.TimingAspect" />
<include within="com.xxx.*" />
</weaver>
</aspectj>

pom.xml

    <properties>
  <perf4j.version>0.9.16</perf4j.version>
  <aspectj.version>1.8.5</aspectj.version>
  <commons.jexl.version>1.1</commons.jexl.version>
    </properties>      <dependency>
<groupId>org.perf4j</groupId>
<artifactId>perf4j</artifactId>
<version>${perf4j.version}</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>${aspectj.version}</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>${aspectj.version}</version>
</dependency>
<dependency>
<groupId>commons-jexl</groupId>
<artifactId>commons-jexl</artifactId>
<version>${commons.jexl.version}</version>
</dependency>

pom.xml内添加plugin

         <plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.7</version>
<configuration>
<complianceLevel>1.7</complianceLevel>
<showWeaveInfo>true</showWeaveInfo>
<verbose>true</verbose>
<weaveDependencies>
<dependency>
<groupId>org.perf4j</groupId>
<artifactId>perf4j</artifactId>
</dependency>
</weaveDependencies>
</configuration>
<dependencies>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjtools</artifactId>
<version>${aspectj.version}</version>
</dependency>
</dependencies>
<executions>
<execution>
<goals>
<goal>compile</goal><!-- use this goal to weave all your main classes -->
<goal>test-compile</goal><!-- use this goal to weave all your test classes -->
</goals>
</execution>
</executions>
</plugin>

至此logback+perf4j配置就完成了。

关于perf4j生成图表没有搭建成功,个人觉得logback和perf4j的结合使用不如log4j来的方便。

最新文章

  1. (转载)哈夫曼编码(Huffman)
  2. PHP 数据库连接工具类(MySQLI函数包装)
  3. Hbuilder开发HTML5 APP之打开新页面
  4. 万能面试问题大全,教你怎么回答,怎么拿下offer
  5. express:webpack dev-server开发中如何调用后端服务器的接口?
  6. projecteuler Problem 8 Largest product in a series
  7. smarty基本语法
  8. Know How To Use Check Box Mapping Of Other Values Property In Oracle Forms
  9. Android 操作系统的内存回收机制
  10. The h.264 Sequence Parameter Set
  11. Visual C++ unicode and utf8 转换
  12. sicily 1099 Packing Passengers
  13. JavaEE Tutorials (15) - 对Java持久化API应用使用二级缓存
  14. java中怎么终止一个线程的执行----个人学习心得
  15. Qt图片按原比例缩放
  16. MySQL (九)
  17. 高校征信系统项目Postmortem结果
  18. android 签名
  19. JDBCUtils相关
  20. oracle归档日志关闭和打开

热门文章

  1. 程序Dog的大梦想
  2. 详细的git入门级别,从安装到实战
  3. [NOI2017]蚯蚓排队(链表+hash)
  4. 产品对话 | 愿云原生不再只有Kubernete
  5. 成为优秀Angular开发者所需要学习的19件事
  6. javaweb学习——会话技术(二)
  7. Vue专题-组件
  8. PHP系列 | ThinkPHP5.1 如何自动加载第三方SDK(非composer包 )
  9. rclone使用心得
  10. 给select赋值之后,再点击选择下拉值时,显示一值不变的解决