forked from mirror/logrus
53 lines
1.1 KiB
Go
53 lines
1.1 KiB
Go
package logrus_logstash
|
|
|
|
import (
|
|
"bytes"
|
|
"encoding/json"
|
|
"github.com/Sirupsen/logrus"
|
|
"github.com/stretchr/testify/assert"
|
|
"testing"
|
|
)
|
|
|
|
func TestLogstashFormatter(t *testing.T) {
|
|
assert := assert.New(t)
|
|
|
|
lf := LogstashFormatter{Type: "abc"}
|
|
|
|
fields := logrus.Fields{
|
|
"message": "def",
|
|
"level": "ijk",
|
|
"type": "lmn",
|
|
"one": 1,
|
|
"pi": 3.14,
|
|
"bool": true,
|
|
}
|
|
|
|
entry := logrus.WithFields(fields)
|
|
entry.Message = "msg"
|
|
entry.Level = logrus.InfoLevel
|
|
|
|
b, _ := lf.Format(entry)
|
|
|
|
var data map[string]interface{}
|
|
dec := json.NewDecoder(bytes.NewReader(b))
|
|
dec.UseNumber()
|
|
dec.Decode(&data)
|
|
|
|
// base fields
|
|
assert.Equal(json.Number("1"), data["@version"])
|
|
assert.NotEmpty(data["@timestamp"])
|
|
assert.Equal("abc", data["type"])
|
|
assert.Equal("msg", data["message"])
|
|
assert.Equal("info", data["level"])
|
|
|
|
// substituted fields
|
|
assert.Equal("def", data["fields.message"])
|
|
assert.Equal("ijk", data["fields.level"])
|
|
assert.Equal("lmn", data["fields.type"])
|
|
|
|
// formats
|
|
assert.Equal(json.Number("1"), data["one"])
|
|
assert.Equal(json.Number("3.14"), data["pi"])
|
|
assert.Equal(true, data["bool"])
|
|
}
|