logger/gelf: Skip empty lines to comply with spec

The [gelf payload specification](http://docs.graylog.org/en/2.4/pages/gelf.html#gelf-payload-specification)
demands that the field `short_message` *MUST* be set by the client library.
Since docker logging via the gelf driver sends messages line by line, it can happen that messages with an empty
`short_message` are passed on. This causes strict downstream processors (like graylog) to raise an exception.

The logger now skips messages with an empty line.

Resolves: #40232
See also: #37572

Signed-off-by: Jonas Heinrich <Jonas@JonasHeinrich.com>
(cherry picked from commit 5c6b913ff1)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
This commit is contained in:
Jonas Heinrich 2019-11-21 06:21:42 -08:00 committed by Sebastiaan van Stijn
parent ea84732a77
commit 449b60fcd0
No known key found for this signature in database
GPG key ID: 76698F39D527CE8C

View file

@ -166,6 +166,10 @@ func newGELFUDPWriter(address string, info logger.Info) (gelf.Writer, error) {
}
func (s *gelfLogger) Log(msg *logger.Message) error {
if len(msg.Line) == 0 {
return nil
}
level := gelf.LOG_INFO
if msg.Source == "stderr" {
level = gelf.LOG_ERR