Beet是一个Java开源类库用于记录Spring Java应用程序的性能指示。它能够记录Java方法调用情况、SQL语句和HTTP请求,也可以记录自定义事件。配置简单,并且不需要改动任何代码。能够立即知道那一个用户与Session触发的每一个事件和什么时候触发的。提供JMX管理和诊断工具。能够将记录数据输出为XML或利用JDBC存储到数据库中。Beet对系统资源消耗低。
官方网址:http://beet.sourceforge.net/(官方网站不支持IE6,建议用Firefox或者Chrome浏览)
我读完教程后,竟然发现Beet就是好像专门为Ss3ex设计的,Beet的配置环境和ss3ex的环境一样
。
指南地址:http://beet.sourceforge.net/documentation/tutorial
我再怎么描述,觉得也比不了官方的写得好。
我简述总结下:
1、Beet能够记录Java方法调用情况、SQL语句和HTTP请求,分别对应在配置文件spring-base.xml中的三个地方,配置简单。
2、其中官方的指南上对于记录Java方法调用情况,是用AspectJ pointcut 写的:
track-method-expression="execution(* com.mtgi.analytics.example.service..*(..))"
我可以做下改进,结合annotation的标签来做声明式标注:
@Pointcut("@annotation(你自定义的标签)")
具体的可以参考我博客中的另一篇文章《ss3ex中使用声明式缓存》中的annotation的标签的用法。
3、配置后记录日志的格式如下:
<?xml version="1.0" encoding="UTF-8" ?>
- <event-log>
- <event id="3dc2f043-c764-48f9-9977-76f689ba12e3">
<type>http-request</type>
<name>/</name>
<application>ss3ex</application>
<start>2009-05-30T22:42:29.203+08:00</start>
<duration-ms>234</duration-ms>
- <event-data uri="/" protocol="HTTP/1.1" method="GET" remote-address="127.0.0.1" remote-host="127.0.0.1">
<parameters />
</event-data>
</event>
- <event id="d5576543-d7d0-48c5-a830-3060078a5cb3">
<type>http-request</type>
<name>/demo/success.shtml</name>
<application>ss3ex</application>
<start>2009-05-30T22:42:29.437+08:00</start>
<duration-ms>94</duration-ms>
- <event-data uri="/demo/success.shtml" protocol="HTTP/1.1" method="GET" remote-address="127.0.0.1" remote-host="127.0.0.1">
<parameters />
</event-data>
</event>
……
附录:spring-beet.xml文件
<?xml version="1.0"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:bt="http://www.mantis-tgi.com/schema/bt/1.1"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.mantis-tgi.com/schema/bt/1.1 http://www.mantis-tgi.com/schema/bt/mtgi-bt-1.1.xsd">
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"/>
<bt:manager application="ss3ex" flush-schedule="0/30 * * * * ?"
track-method-expression="@annotation(log)">
<bt:xml-persister binary="false" compress="false" file="${catalina.home}/logs/beet-ss3ex-perf.xml"/>
<bt:http-requests parameters="command"/>
</bt:manager>
</beans>
其中@annotation(log)是我声明的日志标签。