Groovy应用(1) - 使用Groovy解析日志

其中合法的,需要处理的日志行的基本模版如下:

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;数据源名称;127.0.0.1;****|XXXX;{"data":{"desc":"一致","status":"1","cid":"XXXX","name":"****"},"msg":"success","code":0}

结构为:
INFO [---][dw-两位数字 GET restfull url] api service v1 - access:G1;数据源名称;访问ip;被查询姓名|被查询身份证号;json格式返回结果

  • 首先完成文件的读写

def readLine(fileName) {
    new File(fileName).eachLine {
        line ->checkNeed "${line}"
    }
} 
def checkNeed(lineStr){
    println lineStr
}
  • 完成文件遍历,调用文件读取

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/]
    //遍历数组的方式: 数组.each{成员变量 ->处理语句}
    days.each { perday ->
            readLine("I:\\待处理\\2016-06-14日志处理\\application-" + perday + "-0.log", perday);    
          }
}

  • 匹配大括号和获取IP的正则表达式


def 匹配大括号(txt) {
    def matcher = txt =~ /\[(.*?)\]/
  //可以加入任何需要过滤的特殊字符(注意有的需要转义)
    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;
}

  • 开发完毕后,生成一个字符串,另存为csv,然后用excel处理一下即可

Paste_Image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 12,239评论 2 33
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,009评论 19 139
  • Swift版本点击这里欢迎加入QQ群交流: 594119878最新更新日期:18-09-17 About A cu...
    ylgwhyh阅读 25,586评论 7 249
  • 个人学习批处理的初衷来源于实际工作;在某个迭代版本有个BS(安卓手游模拟器)大需求,从而在测试过程中就重复涉及到...
    Luckykailiu阅读 4,792评论 0 11
  • 没有剃光纠结那阵子,为了扮酷我买了各种款式的帽子戴,镜子里的自己也还挺精神,但是新问题出现了,吃饭时要摘了吗、...
    副部长阅读 314评论 0 0