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的話,就能夠直接刷出信息。