diff --git a/parser/syslog/syslog.go b/parser/syslog/syslog.go index 7c8b5437f..49ef29529 100644 --- a/parser/syslog/syslog.go +++ b/parser/syslog/syslog.go @@ -146,14 +146,14 @@ func (p *SyslogParser) Parse(lines []string) ([]Data, error) { if p.facilityDetail { if v, ok := parseResult.Data[Facility]; ok { - code, _ := v.(int) - parseResult.Data[Facility] = syslog.MessageFacilities[code] + code, _ := v.(uint8) + parseResult.Data[Facility] = syslog.MessageFacilities[int(code)] } } if p.severityDetail { if v, ok := parseResult.Data[Severity]; ok { - code, _ := v.(int) - parseResult.Data[Severity] = syslog.MessageSeverities[code] + code, _ := v.(uint8) + parseResult.Data[Severity] = syslog.MessageSeverities[int(code)] } } if parseResult.Err != nil { diff --git a/parser/syslog/syslog_test.go b/parser/syslog/syslog_test.go index b67d9efd2..cfa81ec45 100644 --- a/parser/syslog/syslog_test.go +++ b/parser/syslog/syslog_test.go @@ -9,6 +9,7 @@ import ( "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" @@ -226,3 +227,22 @@ func TestSyslogParser_ParseYear(t *testing.T) { assert.Equal(t, time.Now().Month().String(), dt["timestamp"].(time.Time).Month().String()) } } + +func TestSyslogParser_Detail(t *testing.T) { + c := conf.MapConf{} + c[KeyParserType] = "syslog" + c[KeySeverityDetail] = "true" + c[KeyFacilityDetail] = "true" + p, err := NewParser(c) + assert.Nil(t, err) + lines := []string{ + `<34>Oct 11 22:14:15 mymachine very.large.syslog.message.tag: 'su root' failed for lonvick on /dev/pts/8`, + } + dts, err := p.Parse(lines) + assert.Nil(t, err) + ndata, err := p.Parse([]string{PandoraParseFlushSignal}) + assert.Nil(t, err) + dts = append(dts, ndata...) + assert.Equal(t, syslog.MessageFacilities[4], dts[0][Facility]) + assert.Equal(t, syslog.MessageSeverities[2], dts[0][Severity]) +}