diff --git a/parser/syslog/syslog_test.go b/parser/syslog/syslog_test.go index cfa81ec45..d629f1f3c 100644 --- a/parser/syslog/syslog_test.go +++ b/parser/syslog/syslog_test.go @@ -4,15 +4,16 @@ import ( "errors" "fmt" "strconv" + "strings" "testing" "time" "github.com/stretchr/testify/assert" - "github.com/qiniu/logkit/utils/parse/syslog" "github.com/qiniu/logkit/conf" . "github.com/qiniu/logkit/parser/config" . "github.com/qiniu/logkit/utils/models" + "github.com/qiniu/logkit/utils/parse/syslog" ) // 为了保证datasource不错乱,暂不支持多行采集,需要将socket采集中的获取方式改成按原始包读取 @@ -211,7 +212,6 @@ func TestSyslogParser_ParseYear(t *testing.T) { c = conf.MapConf{} c[KeyParserType] = "syslog" - c[KeyTimeZoneOffset] = "-8" c[KeyRFC3164ParseYear] = "true" p, err = NewParser(c) assert.Nil(t, err) @@ -246,3 +246,44 @@ func TestSyslogParser_Detail(t *testing.T) { assert.Equal(t, syslog.MessageFacilities[4], dts[0][Facility]) assert.Equal(t, syslog.MessageSeverities[2], dts[0][Severity]) } + +func TestSyslogParser3164_Month(t *testing.T) { + c := conf.MapConf{} + c[KeyParserType] = "syslog" + c[KeyRFC3164ParseYear] = "true" + p, err := NewParser(c) + assert.Nil(t, err) + lines := []string{ + `<34>JAN 1 22:14:15 2019`, + `<34>jan 01 22:14:15 2019`, + `<34>FEB 2 22:14:15 2019`, + `<34>feb 02 22:14:15 2019`, + `<34>MAR 3 22:14:15 2019`, + `<34>mar 03 22:14:15 2019`, + `<34>APR 4 22:14:15 2019`, + `<34>apr 04 22:14:15 2019`, + `<34>MAY 5 22:14:15 2019`, + `<34>may 05 22:14:15 2019`, + `<34>JUN 6 22:14:15 2019`, + `<34>jun 06 22:14:15 2019`, + `<34>JUL 7 22:14:15 2019`, + `<34>jul 07 22:14:15 2019`, + `<34>AUG 8 22:14:15 2019`, + `<34>aug 08 22:14:15 2019`, + `<34>SEP 9 22:14:15 2019`, + `<34>sep 09 22:14:15 2019`, + `<34>OCT 10 22:14:15 2019`, + `<34>oct 11 22:14:15 2019`, + `<34>NOV 21 22:14:15 2019`, + `<34>nov 25 22:14:15 2019`, + `<34>DEC 31 22:14:15 2019`, + `<34>dec 31 22:14:15 2019`, + } + datas, err := p.Parse(lines) + assert.Nil(t, err) + for i, data := range datas { + expected, err := time.Parse("Jan _2 15:04:05 2006", strings.TrimPrefix(lines[i], "<34>")) + assert.Nil(t, err) + assert.Equal(t, expected.Format("2006-01-02 15:04:05 +0000 UTC"), data["timestamp"].(time.Time).String()) + } +} diff --git a/vendor/github.com/influxdata/go-syslog/rfc3164/machine.go b/vendor/github.com/influxdata/go-syslog/rfc3164/machine.go index 45c2a8db6..05d33cef2 100644 --- a/vendor/github.com/influxdata/go-syslog/rfc3164/machine.go +++ b/vendor/github.com/influxdata/go-syslog/rfc3164/machine.go @@ -998,21 +998,21 @@ func (m *machine) Parse(input []byte) (syslog.LogParts, error) { } } switch _widec { - case 65: + case 65, 97: goto tr8 - case 68: + case 68, 100: goto tr9 - case 70: + case 70, 102: goto tr10 - case 74: + case 74, 106: goto tr11 - case 77: + case 77, 109: goto tr12 - case 78: + case 78, 110: goto tr13 - case 79: + case 79, 111: goto tr14 - case 83: + case 83, 115: goto tr15 } if 560 <= _widec && _widec <= 569 { @@ -1030,9 +1030,9 @@ func (m *machine) Parse(input []byte) (syslog.LogParts, error) { } stCase5: switch (m.data)[(m.p)] { - case 112: + case 112, 80: goto st6 - case 117: + case 117, 85: goto st284 } goto tr7 @@ -1041,7 +1041,7 @@ func (m *machine) Parse(input []byte) (syslog.LogParts, error) { goto _testEof6 } stCase6: - if (m.data)[(m.p)] == 114 { + if (m.data)[(m.p)] == 114 || (m.data)[(m.p)] == 82 { goto st7 } goto tr7 @@ -1064,13 +1064,12 @@ func (m *machine) Parse(input []byte) (syslog.LogParts, error) { goto st9 case 48: goto st374 + case 49,50: + goto st282 case 51: goto st283 } - if 49 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 50 { - goto st282 - } - if 51 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 { + if 51 < (m.data)[(m.p)] && (m.data)[(m.p)] <= 57 { goto st375 } goto tr7 @@ -5283,6 +5282,9 @@ func (m *machine) Parse(input []byte) (syslog.LogParts, error) { goto _testEof283 } stCase283: + if (m.data)[(m.p)] == 32 { + goto st11 + } if 48 <= (m.data)[(m.p)] && (m.data)[(m.p)] <= 49 { goto st10 } @@ -5292,7 +5294,7 @@ func (m *machine) Parse(input []byte) (syslog.LogParts, error) { goto _testEof284 } stCase284: - if (m.data)[(m.p)] == 103 { + if (m.data)[(m.p)] == 103 || (m.data)[(m.p)] == 71 { goto st7 } goto tr7 @@ -5306,7 +5308,7 @@ func (m *machine) Parse(input []byte) (syslog.LogParts, error) { goto _testEof285 } stCase285: - if (m.data)[(m.p)] == 101 { + if (m.data)[(m.p)] == 101 || (m.data)[(m.p)] == 69 { goto st286 } goto tr7 @@ -5315,7 +5317,7 @@ func (m *machine) Parse(input []byte) (syslog.LogParts, error) { goto _testEof286 } stCase286: - if (m.data)[(m.p)] == 99 { + if (m.data)[(m.p)] == 99 || (m.data)[(m.p)] == 67 { goto st7 } goto tr7 @@ -5329,7 +5331,7 @@ func (m *machine) Parse(input []byte) (syslog.LogParts, error) { goto _testEof287 } stCase287: - if (m.data)[(m.p)] == 101 { + if (m.data)[(m.p)] == 101 || (m.data)[(m.p)] == 69 { goto st288 } goto tr7 @@ -5338,7 +5340,7 @@ func (m *machine) Parse(input []byte) (syslog.LogParts, error) { goto _testEof288 } stCase288: - if (m.data)[(m.p)] == 98 { + if (m.data)[(m.p)] == 98 || (m.data)[(m.p)] == 66 { goto st7 } goto tr7 @@ -5353,9 +5355,9 @@ func (m *machine) Parse(input []byte) (syslog.LogParts, error) { } stCase289: switch (m.data)[(m.p)] { - case 97: + case 97,65: goto st290 - case 117: + case 117,85: goto st291 } goto tr7 @@ -5364,7 +5366,7 @@ func (m *machine) Parse(input []byte) (syslog.LogParts, error) { goto _testEof290 } stCase290: - if (m.data)[(m.p)] == 110 { + if (m.data)[(m.p)] == 110 || (m.data)[(m.p)] == 78 { goto st7 } goto tr7 @@ -5374,9 +5376,9 @@ func (m *machine) Parse(input []byte) (syslog.LogParts, error) { } stCase291: switch (m.data)[(m.p)] { - case 108: + case 108, 76: goto st7 - case 110: + case 110, 78: goto st7 } goto tr7 @@ -5390,7 +5392,7 @@ func (m *machine) Parse(input []byte) (syslog.LogParts, error) { goto _testEof292 } stCase292: - if (m.data)[(m.p)] == 97 { + if (m.data)[(m.p)] == 97 || (m.data)[(m.p)] == 65 { goto st293 } goto tr7 @@ -5400,9 +5402,9 @@ func (m *machine) Parse(input []byte) (syslog.LogParts, error) { } stCase293: switch (m.data)[(m.p)] { - case 114: + case 114, 82: goto st7 - case 121: + case 121, 89: goto st7 } goto tr7 @@ -5416,7 +5418,7 @@ func (m *machine) Parse(input []byte) (syslog.LogParts, error) { goto _testEof294 } stCase294: - if (m.data)[(m.p)] == 111 { + if (m.data)[(m.p)] == 111 || (m.data)[(m.p)] == 79 { goto st295 } goto tr7 @@ -5425,7 +5427,7 @@ func (m *machine) Parse(input []byte) (syslog.LogParts, error) { goto _testEof295 } stCase295: - if (m.data)[(m.p)] == 118 { + if (m.data)[(m.p)] == 118 || (m.data)[(m.p)] == 86 { goto st7 } goto tr7 @@ -5439,7 +5441,7 @@ func (m *machine) Parse(input []byte) (syslog.LogParts, error) { goto _testEof296 } stCase296: - if (m.data)[(m.p)] == 99 { + if (m.data)[(m.p)] == 99 || (m.data)[(m.p)] == 67 { goto st297 } goto tr7 @@ -5448,7 +5450,7 @@ func (m *machine) Parse(input []byte) (syslog.LogParts, error) { goto _testEof297 } stCase297: - if (m.data)[(m.p)] == 116 { + if (m.data)[(m.p)] == 116 || (m.data)[(m.p)] == 84 { goto st7 } goto tr7 @@ -5462,7 +5464,7 @@ func (m *machine) Parse(input []byte) (syslog.LogParts, error) { goto _testEof298 } stCase298: - if (m.data)[(m.p)] == 101 { + if (m.data)[(m.p)] == 101 || (m.data)[(m.p)] == 69 { goto st299 } goto tr7 @@ -5471,7 +5473,7 @@ func (m *machine) Parse(input []byte) (syslog.LogParts, error) { goto _testEof299 } stCase299: - if (m.data)[(m.p)] == 112 { + if (m.data)[(m.p)] == 112 || (m.data)[(m.p)] == 80 { goto st7 } goto tr7 diff --git a/vendor/vendor.json b/vendor/vendor.json index 6a7155fc4..8a70ea2df 100644 --- a/vendor/vendor.json +++ b/vendor/vendor.json @@ -404,7 +404,7 @@ "versionExact": "v3.0.0" }, { - "checksumSHA1": "LW8IqSuDESCWaGBykseTzOVAEsw=", + "checksumSHA1": "PMJNwoONVNE+Jq7cvRaaBsOGWAo=", "path": "github.com/influxdata/go-syslog/rfc3164", "revision": "a1889d947b48b1519a4615c640d993551ad6d8fc", "revisionTime": "2020-11-28T20:09:27Z",