IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> 日志解析--ldetool -> 正文阅读

[开发工具]日志解析--ldetool

背景:

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

安装(windows)

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

在这里插入图片描述

实践

  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 `<something>.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 <project path>`
    
  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:\webwork\ldetool,出现如下错误
    在这里插入图片描述
    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,执行成功,显示如下
在这里插入图片描述

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2021-10-30 12:42:51  更:2021-10-30 12:44:54 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 20:41:19-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码