其中合法的,需要處理的日志行的基本模版如下:
INFO [11:30:09.356] [dw-23 - GET ....../name_cid_check/%E6%9D%8E%E6%9E%97%E5%B3%B0/XXXX] api service v1 - access:G1;數(shù)據(jù)源名稱;127.0.0.1;****|XXXX;{"data":{"desc":"一致","status":"1","cid":"XXXX","name":"****"},"msg":"success","code":0}
結(jié)構(gòu)為:
INFO [---][dw-兩位數(shù)字 GET restfull url] api service v1 - access:G1;數(shù)據(jù)源名稱该窗;訪問ip瓢棒;被查詢姓名|被查詢身份證號;json格式返回結(jié)果
-
首先完成文件的讀寫
def readLine(fileName) {
new File(fileName).eachLine {
line ->checkNeed "${line}"
}
}
def checkNeed(lineStr){
println lineStr
}
-
完成文件遍歷,調(diào)用文件讀取
def main() {
def days = [/2016-05-13/, /2016-05-14/, /2016-05-15/, /2016-05-16/, /2016-05-17/, /2016-05-18/,/2016-05-19/, /2016-05-20/, /2016-05-21/, /2016-05-27/, /2016-06-01/, /2016-06-07/,/2016-06-09/, /2016-06-12/, /2016-06-13/, /2016-06-14/]
//遍歷數(shù)組的方式: 數(shù)組.each{成員變量 ->處理語句}
days.each { perday ->
readLine("I:\\待處理\\2016-06-14日志處理\\application-" + perday + "-0.log", perday);
}
}
-
匹配大括號和獲取IP的正則表達式
def 匹配大括號(txt) {
def matcher = txt =~ /\[(.*?)\]/
//可以加入任何需要過濾的特殊字符(注意有的需要轉(zhuǎn)義)
def result=[];
while (matcher.find()) {
result.add( matcher.group(1));
}
return result;
}
def getIp(txt){
def matcher = txt =~/(\d+\.\d+\.\d+\.\d+)/;
def result=[];
while (matcher.find()) {
result.add( matcher.group(0));
}
return result;
}
-
開發(fā)完畢后,生成一個字符串,另存為csv雷袋,然后用excel處理一下即可
Paste_Image.png