Cat介绍
Cat是一个汇总格式化日志的产品,他是大众点评的开源项目。
他的提供了自己的一套jar包,提供了记录日志的api,我们写代码的时候想对异常的处理整理记录以及想记录的sql执行时间、一个相关数据的统计等等,都可以依靠他的api来做。
注:以上的定义是我自己用过产品后,自己的认识
编译参考
https://github.com/dianping/cat
编译必须用jdk6,虽然上面说增加了对jdk8的支持,但是编译到最后仍然会有问题,所以选择jdk6。
Agent项目没有编译,也确实不需要编译,最后确实没有用到这个工程。
使用手册(网站上给的使用手册不全)
这里补充原先文档上不足或者有歧义的地方
原来的文档上没说,怎么把东西放到tomcat上,实际上不是agent什么的,而是编译出的那个war包,就是最后执行的时候在jetty上跑的那个应用,我们需要把那个war包改名为cat部署到tomcat上即可。多节点配置原来的文档没有问题。
客户端主要功能
Transaction用来记录一段程序响应时间(时间)
Event用来记录一行code的执行次数(次数)
Metric用来记录一个业务指标
提供了3个api
logMetricForCount用于记录一个指标值出现的次数
logMetricForDuration用于记录一个指标出现的平均值
logMetricForSum用于记录一个指标出现的总和
他的模型是你的tomcat上部署的war包重点是用来查看结果信息的,你使用了他的api编写的程序是信息的发送者,默认发消息是给本地的tomcat上的cat,多个cat之间可以做分布式,查看远程的计算机的监控情况。
demo
他自带的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的话,就可以直接刷出信息。