Cat是一个汇总格式化日志的产品,他是大众点评的开源项目。java
他的提供了本身的一套jar包,提供了记录日志的api,咱们写代码的时候想对异常的处理整理记录以及想记录的sql执行时间、一个相关数据的统计等等,均可以依靠他的api来作。git
注:以上的定义是我本身用过产品后,本身的认识github
https://github.com/dianping/catsql
编译必须用jdk6,虽然上面说增长了对jdk8的支持,可是编译到最后仍然会有问题,因此选择jdk6。api
Agent项目没有编译,也确实不须要编译,最后确实没有用到这个工程。tomcat
使用手册(网站上给的使用手册不全)app
这里补充原先文档上不足或者有歧义的地方分布式
原来的文档上没说,怎么把东西放到tomcat上,实际上不是agent什么的,而是编译出的那个war包,就是最后执行的时候在jetty上跑的那个应用,咱们须要把那个war包更名为cat部署到tomcat上便可。多节点配置原来的文档没有问题。测试
Transaction用来记录一段程序响应时间(时间)网站
Event用来记录一行code的执行次数(次数)
Metric用来记录一个业务指标
提供了3个api
logMetricForCount用于记录一个指标值出现的次数
logMetricForDuration用于记录一个指标出现的平均值
logMetricForSum用于记录一个指标出现的总和
他的模型是你的tomcat上部署的war包重点是用来查看结果信息的,你使用了他的api编写的程序是信息的发送者,默认发消息是给本地的tomcat上的cat,多个cat之间能够作分布式,查看远程的计算机的监控状况。
他自带的test下有相关的测试代码,网上都让看TestStorageMessage这个类。
写程序的时候记得导入相应的jar包,jar包在war包的lib目录下。在META-INF(普通的java程序,本身在src下创建目录)下,新建app.properties文件,写入app.name=cat。
public static void main(String[] args) { Transaction t = Cat.newTransaction("my", "sql");//这里记录到transaction的时间,一直到complete Cat.logEvent("sqlx", "sql"); Cat.logEvent("sqlx", "sql2");//这里记录次数 Cat.logEvent("sqlx", "sql3"); try{ int a=10; Cat.logMetricForCount("num a", a); a=10/0; t.setStatus(Transaction.SUCCESS); }catch(Exception e){ t.setStatus(e); }finally{ t.complete(); } }
尝试执行这段代码,执行以后你就能够看到transaction和event里有你的记录了,具体的功能看上面的介绍,或者看工程里自带的开发者文档。
注:app.name=cat,此处指定的cat是你url里访问的cat,若是你修改了名字,请更换url里的名字,war包里默认的就是cat的名字,你用cat的话,就能够直接刷出信息。