背景:
使用grok決議日志做欄位拆分,性能上可能存在問題,嘗試使用ldetool,與grok做下對比,
安裝(windows)
下載壓縮包:[ldetool](https://github.com/sirkon/ldetool)
使用idea打開
當前目錄是 **D:\webwork\ldetool**

實踐
-
專案里已存在的demo是上圖中紅框所示的三個檔案,下面按照README.md的步驟進行生成自己的demo,以便更容易熟悉其邏輯,
-
首先解決go mod的報錯

直接洗掉go.mod里有關github.com/sirkon/gosrcfmt的配置即可 -
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>` -
所以新建一個檔案,如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
-
新建檔案line.go,填寫如下(包含雙斜杠):
//go:generate ldetool --package main line.lde -
terminal執行命令
go generate D:\webwork\ldetool,出現如下錯誤

line.go檔案里就這三行,然后報錯了,試了幾次后發現需要加個第四行,就可以執行成功了,


執行成功結果

生成相關處理該格式的日志的結構體物件

-
撰寫gotest,日志內容是
[2017-09-02T22:48:13] FETCH first[1] format[JSON] hidden["1"] userAgent[Android App v1.0] rnd[21341975] country[MA]
8. 執行結果如下:

轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/340462.html
標籤:其他
