log/formatter_json_test.go

62 lines
1.7 KiB
Go

// Copyright 2023 Martin Riedl
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package log
import "testing"
func TestFormatterJson(t *testing.T) {
// prepare test data
entry := &Entry{
Message: "Some Text",
Content: []Content{
{Key: "k1", Value: "v1"},
{Key: "k2", Value: "v2"},
},
Level: LevelInfo,
}
result := `{"fields":[{"key":"k1","value":"v1"},{"key":"k2","value":"v2"}],"level":"INFO","message":"Some Text","time":"0001-01-01T00:00:00Z"}`
// execute formatter
formatter := NewFormatterJSON()
formatter.Begin(entry)
formatter.Process(entry)
data := formatter.End(entry)
if string(data) != result {
t.Error("received invalid JSON data", string(data))
}
}
func TestFormatterJsonFlat(t *testing.T) {
// prepare test data
entry := &Entry{
Message: "Some Text",
Content: []Content{
{Key: "k1", Value: "v1"},
{Key: "k2", Value: "v2"},
},
Level: LevelInfo,
}
result := `{"k1":"v1","k2":"v2","level":"INFO","message":"Some Text","time":"0001-01-01T00:00:00Z"}`
// execute formatter
formatter := NewFormatterJSON()
formatter.FlatContent = true
formatter.Begin(entry)
formatter.Process(entry)
data := formatter.End(entry)
if string(data) != result {
t.Error("received invalid JSON data", string(data))
}
}