標籤:style http io color ar os 使用 java sp
日誌樣本:
囧,日誌格式是我隨便定得(莫噴,在明珠時有專門的資料群組統計日誌,日誌都非常規範,在這完全亂套了),為了方便統計支付成功的總金額旁邊都空了個空格,這樣的話方便使用awk取出金額!
[INFO] 2014-11-05 15:30:31,067 [http-bio-8060-exec-24] [com.xxxx.service.impl.PayServiceImpl.updatePayOver:56]module:[PAY],orderid:[xxxxxxx],trade_no:[xxxxxxxx],total_fee:[2560.0],payMethod:[百度錢包][INFO] 2014-11-05 15:30:31,095 [http-bio-8060-exec-24] [com.xxxx.service.impl.PayServiceImpl.updatePayOver:60]module:[PAY],orderid:[xxxxxxx],trade_no:[xxxxxxxx],total_fee:[ 2560.0 ],payMethod:[百度錢包],code:[payok]
第一步:統計出支付成功的日誌
*”[]“屬於正則關鍵字故需要轉義
grep ‘code:\[payok\]‘ catalina.out
當然,為了效能我們可以查出支付成功的訂單時就將它寫入一個檔案,後面的查詢再依據這個來查詢!
grep ‘code:\[payok\]‘ catalina.out > ~/test.txt
第二部:取出金額,並計算金額
cat ~/test.txt | awk ‘{print $6}‘ | awk ‘{sum+=$1} END {print sum}‘
當然需要查詢支付成功的訂單的數目直接
wc -l ~/test.txt
下面對上面的查詢進行擴充:
1. 查詢當天的支付的訂單數目
cat ~/test.txt | grep -c `date "+%Y-%m-%d"`
同樣也是先篩選出支付成功的訂單,然後再塞選今天的數目
這裡先列出grep常用的命令列選項:
-c 只顯示有多少行匹配,而不具體顯示匹配的行。 -h 不顯示檔案名稱。 -i 在字串比較的時候忽略大小寫。 -l 只顯示包含匹配模板的行的檔案名稱清單。 -L 只顯示不包含匹配模板的行的檔案名稱清單。 -n 在每一行前面列印改行在檔案中的行數。 -v 反向檢索,只顯示不匹配的行。 -w 只顯示完整單詞的匹配。 -x 只顯示完整行的匹配。 -r/-R 如果檔案參數是目錄,該選項將遞迴搜尋該目錄下的所有子目錄和檔案。
2. 查詢當月支付成功的訂單
cat ~/test.txt | grep `date "+%Y-%m"`
date為日期函數``表示嵌套命令,也可以直接grep 2014-11,對於中文字元或者有空格的需要grep 後面的參數加上""引號(單引或者雙引貌似都行)
3. 統計10月和11月的訂單grep支援正則,很是強大
grep ‘2014-1[0-1]‘
剩下的不多說的,看官自己去擴充
下面來說說replace、find
1. 查詢多個 tomcat的 Context資訊(之前面試的時候有遇到過,確實很方便)
find ./ -name server.xml | xargs grep "<Context"
2. 統一更改設定檔中的支付回調網域名稱(前提:有100多個設定檔source_xxx.properties修改,實在受不了,查了這個命令,非常好用)
replace ‘xxx.xxx.cn‘ ‘xx.xxx.cn‘ -- source_*
希望大家補充,我也好去多學習一些,啊哈哈哈...
下面是按照每天統計出來的熱點圖,可看出其實7點左右支付的人最少最適合更新代碼!
使用grep、awk統計查詢日誌