栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

日志解析--ldetool

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

日志解析--ldetool

背景:

使用grok解析日志做字段拆分,性能上可能存在问题,尝试使用ldetool,与grok做下对比。

安装(windows)
下载压缩包:[ldetool](https://github.com/sirkon/ldetool)
使用idea打开
当前目录是 **D:webworkldetool**

实践
  1. 项目里已存在的demo是上图中红框所示的三个文件,下面按照README.md的步骤进行生成自己的demo,以便更容易熟悉其逻辑。

  2. 首先解决go mod的报错
    直接删除go.mod里有关github.com/sirkon/gosrcfmt的配置即可

  3. README.md有下面一段话

    First write extraction script, we usually name it `.lde`
    ……
    The recommended way is to put something like `//go:generate ldetool -- package main Line.lde` in `generate.go` of a package and then generate a code with `go generate `
    
  4. 所以新建一个文件,如line.lde,填写以下内容

     Line = 
     ^'[' Time(string) ']' 
     ^" FETCH " 
     ^"first[" First(uint8) ']'[1]
     ^" format[" Format(string) ~']'
     ?Hidden (^" hidden[" Value(string) ']')
     ^" userAgent[" UserAgent(string) ']'
     _ "country[" Country(string)  ']'
     ;
    

    匹配的日志内容如下:

    [2017-09-02T22:48:13] FETCH first[1] format[JSON] hidden[0] userAgent[Android App v1.0] rnd[21341975] country[MA]
    [2017-09-02T22:48:14] FETCH first[0] format[JSON] userAgent[Android App v1.0] rnd[10000000] country[LC]
    

    具体语法可以查看TOOL_RULES.md

  5. 新建文件line.go,填写如下(包含双斜杠):

    //go:generate ldetool --package main line.lde
    
  6. terminal执行命令go generate D:webworkldetool,出现如下错误

    line.go文件里就这三行,然后报错了。试了几次后发现需要加个第四行,就可以执行成功了。


    执行成功结果

    生成相关处理该格式的日志的结构体对象

  7. 编写gotest,日志内容是[2017-09-02T22:48:13] FETCH first[1] format[JSON] hidden["1"] userAgent[Android App v1.0] rnd[21341975] country[MA]
    8. 执行结果如下:

Linux下实践

1、进入安装目录,rz -e 将windows下的压缩包拷贝到该目录,使用unzip命令解压。然后修改go.mod文件,与上述一样。
2、同样的创建line.lde、line.go文件,然后执行命令go generate /home/op/ldetool-master
3、报如下错误
generate.go:3: running "ldetool": exec: "ldetool": executable file not found in $PATH
4、所以尝试编译main文件进generate,go run main.go dicts.go,出现如下提示
Usage: main [--yaml-dict YAML-DICT] [--json-dict JSON-DICT] [--package PACKAGE] [--big-endian] [--little-endian] [--go-string] [--version] [FILE [FILE ...]] error: missing file name with LDE rules exit status 255
5、按照提示重新执行如下命令,go run main.go dicts.go --package main line.lde,执行成功,显示如下

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/356007.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号