| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- package main
- import (
- "fmt"
- "github.com/gemsi/grok"
- )
- func main() {
- // event()
- systemlog()
- }
- func event() {
- g, _ := grok.New()
- p := map[string]string {
- "MONTHDAY": `(?:(?:0[1-9])|(?:[12][0-9])|(?:3[01])|[1-9])`,
- "MONTHNUM": `(?:0?[1-9]|1[0-2])`,
- "HOUR": `(?:2[0123]|[01]?[0-9])`,
- "MINUTE": `(?:[0-5][0-9])`,
- "SECOND": `(?:(?:[0-5][0-9]|60)(?:[:.,][0-9]+)?)`,
- "TIME": `([^0-9]?)%{HOUR}:%{MINUTE}(?::%{SECOND})([^0-9]?)`,
- "YEAR": `(\d\d){1,2}`,
- "MX_SOURCE": `[a-zA-Z0-9._-]+`,
- "MX_SERVERITY": `[\p{Han}]{2}`,
- "MX_EVENTID": `[0-9]+`,
- "MX_CLASS": `[\p{Han}a-zA-Z0-9/]+`,
- "MX_SUMMARY": `.+`,
- "MX_CDATETIME": `%{YEAR}[/-]%{MONTHNUM}[/-]%{MONTHDAY} %{TIME}`,
- "MX_EVENT_WINDOWS_LOG": `%{MX_SERVERITY}\t%{MX_CDATETIME}\t%{MX_SOURCE}\t%{MX_EVENTID}\t%{MX_CLASS}\t%{MX_SUMMARY}`,
- }
- for k, v := range p {
- fmt.Printf("%s:%s\n",k,v)
- }
- g.AddPatternsFromMap(p)
- msg := `错误 2015/10/08 18:19:10 Microsoft-Windows-EapHost 4390 日志记录/恢复 SettingSyncHost (9152) 无法创建新的日志文件,因为数据库无法写入日志驱动器。该驱动器可能为只读、磁盘空间不足、配置错误或已损坏。错误 -1032。`
- ok, _ := g.Match("%{MX_EVENT_WINDOWS_LOG}", msg)
- if !ok {
- fmt.Printf("%s\n", "error")
- }
- values, err := g.Parse("%{MX_EVENT_WINDOWS_LOG}", msg)
- if err != nil {
- fmt.Printf("%s\n", err.Error())
- }
- fmt.Println("-----------------------------------------------")
- for k, v := range values {
- fmt.Printf("%+15s: %s\n", k, v)
- }
- }
- func systemlog() {
- g, _ := grok.New()
- p := map[string]string {
- "MONTHDAY": `(?:(?:0[1-9])|(?:[12][0-9])|(?:3[01])|[1-9])`,
- "MONTHNUM": `(?:0?[1-9]|1[0-2])`,
- "HOUR": `(?:2[0123]|[01]?[0-9])`,
- "MINUTE": `(?:[0-5][0-9])`,
- "SECOND": `(?:(?:[0-5][0-9]|60)(?:[:.,][0-9]+)?)`,
- "TIME": `([^0-9]?)%{HOUR}:%{MINUTE}(?::%{SECOND})([^0-9]?)`,
- "YEAR": `(\d\d){1,2}`,
- "MX_SERVERITY": `[A-Z]{2,8}`,
- "MX_TYPE": `\[[a-zA-Z0-9/.-_]+\]`,
- "MX_SUMMARY": `.+`,
- "MX_CDATETIME": `%{YEAR}[/-]%{MONTHNUM}[/-]%{MONTHDAY} %{TIME},[0-9]{3}`,
- "MX_CAS_SYSTEMLOG": `%{MX_SERVERITY}[\s]{1,4}%{MX_TYPE}[\s]%{MX_CDATETIME}\s%{MX_SUMMARY}`,
- }
- for k, v := range p {
- fmt.Printf("%s:%s\n",k,v)
- }
- g.AddPatternsFromMap(p)
- msg := `INFO [main] 2015-11-04 18:01:56,789 Index.java:95 - Initializing Lucene index`
- ok, _ := g.Match("%{MX_CAS_SYSTEMLOG}", msg)
- if !ok {
- fmt.Printf("%s\n", "error")
- }
- values, err := g.Parse("%{MX_CAS_SYSTEMLOG}", msg)
- if err != nil {
- fmt.Printf("%s\n", err.Error())
- }
- fmt.Println("-----------------------------------------------")
- for k, v := range values {
- fmt.Printf("%+15s: %s\n", k, v)
- }
- }
|