diff --git a/daemon/logger/syslog/fmt.go b/daemon/logger/syslog/fmt.go index 797c6401b..d9d88bdec 100644 --- a/daemon/logger/syslog/fmt.go +++ b/daemon/logger/syslog/fmt.go @@ -23,3 +23,11 @@ func rfc5424MicroFormatterWithTagAsAppName(p srslog.Priority, hostname, tag, con p, 1, timestamp, hostname, tag, pid, tag, content) return msg } + +func rfc5424MicroFormatterWithSequenceAndTagAsAppName(p srslog.Priority, hostname, tag, content string) string { + now := time.Now() + pid := os.Getpid() + msg := fmt.Sprintf("<%d>%d %d %s %s %s %d %s - %s", + p, 1, now.UnixNano(), now.Format(timeRfc5424fmt), hostname, tag, pid, tag, content) + return msg +} diff --git a/daemon/logger/syslog/validate.go b/daemon/logger/syslog/validate.go index 8f52ff326..6f912913c 100644 --- a/daemon/logger/syslog/validate.go +++ b/daemon/logger/syslog/validate.go @@ -104,6 +104,11 @@ func parseLogFormat(logFmt, proto string) (srslog.Formatter, srslog.Framer, erro return rfc5424MicroFormatterWithTagAsAppName, srslog.RFC5425MessageLengthFramer, nil } return rfc5424MicroFormatterWithTagAsAppName, srslog.DefaultFramer, nil + case "rfc5424micro-seq": + if proto == secureProto { + return rfc5424MicroFormatterWithSequenceAndTagAsAppName, srslog.RFC5425MessageLengthFramer, nil + } + return rfc5424MicroFormatterWithSequenceAndTagAsAppName, srslog.DefaultFramer, nil default: return nil, nil, ErrInvalidSyslogFormat } diff --git a/daemon/logger/syslog/validate_test.go b/daemon/logger/syslog/validate_test.go index d742c67ab..1d26b7729 100644 --- a/daemon/logger/syslog/validate_test.go +++ b/daemon/logger/syslog/validate_test.go @@ -147,6 +147,16 @@ func TestParseLogFormat(t *testing.T) { proto: "tcp", formatter: rfc5424MicroFormatterWithTagAsAppName, framer: srslog.DefaultFramer, + }, { + fmtTyp: "rfc5424micro-seq", + proto: "tcp", + formatter: rfc5424MicroFormatterWithSequenceAndTagAsAppName, + framer: srslog.DefaultFramer, + }, { + fmtTyp: "rfc5424micro-seq", + proto: "tcp+tls", + formatter: rfc5424MicroFormatterWithSequenceAndTagAsAppName, + framer: srslog.RFC5425MessageLengthFramer, }, { fmtTyp: "not support yet", hasError: true,