163 lines
3.5 KiB
Go
163 lines
3.5 KiB
Go
/*
|
|
Copyright IBM Corp. All Rights Reserved.
|
|
|
|
SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
package flogging_test
|
|
|
|
import (
|
|
"bytes"
|
|
"testing"
|
|
|
|
"github.com/hyperledger/fabric/common/flogging"
|
|
"github.com/hyperledger/fabric/common/flogging/mock"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestGlobalReset(t *testing.T) {
|
|
flogging.Reset()
|
|
err := flogging.Global.SetFormat("json")
|
|
require.NoError(t, err)
|
|
err = flogging.Global.ActivateSpec("logger=debug")
|
|
require.NoError(t, err)
|
|
|
|
system, err := flogging.New(flogging.Config{})
|
|
require.NoError(t, err)
|
|
require.NotEqual(t, flogging.Global.LoggerLevels, system.LoggerLevels)
|
|
require.NotEqual(t, flogging.Global.Encoding(), system.Encoding())
|
|
|
|
flogging.Reset()
|
|
require.Equal(t, flogging.Global.LoggerLevels, system.LoggerLevels)
|
|
require.Equal(t, flogging.Global.Encoding(), system.Encoding())
|
|
}
|
|
|
|
func TestGlobalInitConsole(t *testing.T) {
|
|
flogging.Reset()
|
|
defer flogging.Reset()
|
|
|
|
buf := &bytes.Buffer{}
|
|
flogging.Init(flogging.Config{
|
|
Format: "%{message}",
|
|
LogSpec: "DEBUG",
|
|
Writer: buf,
|
|
})
|
|
|
|
logger := flogging.MustGetLogger("testlogger")
|
|
logger.Debug("this is a message")
|
|
|
|
require.Equal(t, "this is a message\n", buf.String())
|
|
}
|
|
|
|
func TestGlobalInitJSON(t *testing.T) {
|
|
flogging.Reset()
|
|
defer flogging.Reset()
|
|
|
|
buf := &bytes.Buffer{}
|
|
flogging.Init(flogging.Config{
|
|
Format: "json",
|
|
LogSpec: "DEBUG",
|
|
Writer: buf,
|
|
})
|
|
|
|
logger := flogging.MustGetLogger("testlogger")
|
|
logger.Debug("this is a message")
|
|
|
|
require.Regexp(t, `{"level":"debug","ts":\d+.\d+,"name":"testlogger","caller":"flogging/global_test.go:\d+","msg":"this is a message"}\s+`, buf.String())
|
|
}
|
|
|
|
func TestGlobalInitLogfmt(t *testing.T) {
|
|
flogging.Reset()
|
|
defer flogging.Reset()
|
|
|
|
buf := &bytes.Buffer{}
|
|
flogging.Init(flogging.Config{
|
|
Format: "logfmt",
|
|
LogSpec: "DEBUG",
|
|
Writer: buf,
|
|
})
|
|
|
|
logger := flogging.MustGetLogger("testlogger")
|
|
logger.Debug("this is a message")
|
|
|
|
require.Regexp(t, `^ts=\d+.\d+ level=debug name=testlogger caller=flogging/global_test.go:\d+ msg="this is a message"`, buf.String())
|
|
}
|
|
|
|
func TestGlobalInitPanic(t *testing.T) {
|
|
flogging.Reset()
|
|
defer flogging.Reset()
|
|
|
|
require.Panics(t, func() {
|
|
flogging.Init(flogging.Config{
|
|
Format: "%{color:evil}",
|
|
})
|
|
})
|
|
}
|
|
|
|
func TestGlobalDefaultLevel(t *testing.T) {
|
|
flogging.Reset()
|
|
|
|
require.Equal(t, "info", flogging.DefaultLevel())
|
|
}
|
|
|
|
func TestGlobalLoggerLevel(t *testing.T) {
|
|
flogging.Reset()
|
|
require.Equal(t, "info", flogging.LoggerLevel("some.logger"))
|
|
}
|
|
|
|
func TestGlobalMustGetLogger(t *testing.T) {
|
|
flogging.Reset()
|
|
|
|
l := flogging.MustGetLogger("logger-name")
|
|
require.NotNil(t, l)
|
|
}
|
|
|
|
func TestFlogginInitPanic(t *testing.T) {
|
|
defer flogging.Reset()
|
|
|
|
require.Panics(t, func() {
|
|
flogging.Init(flogging.Config{
|
|
Format: "%{color:broken}",
|
|
})
|
|
})
|
|
}
|
|
|
|
func TestActivateSpec(t *testing.T) {
|
|
defer flogging.Reset()
|
|
|
|
flogging.ActivateSpec("fatal")
|
|
require.Equal(t, "fatal", flogging.Global.Spec())
|
|
}
|
|
|
|
func TestActivateSpecPanic(t *testing.T) {
|
|
defer flogging.Reset()
|
|
|
|
require.Panics(t, func() {
|
|
flogging.ActivateSpec("busted")
|
|
})
|
|
}
|
|
|
|
func TestGlobalSetObserver(t *testing.T) {
|
|
flogging.Reset()
|
|
defer flogging.Reset()
|
|
|
|
observer := &mock.Observer{}
|
|
|
|
flogging.Global.SetObserver(observer)
|
|
o := flogging.Global.SetObserver(nil)
|
|
require.Exactly(t, observer, o)
|
|
}
|
|
|
|
func TestGlobalSetWriter(t *testing.T) {
|
|
flogging.Reset()
|
|
defer flogging.Reset()
|
|
|
|
w := &bytes.Buffer{}
|
|
|
|
old := flogging.Global.SetWriter(w)
|
|
flogging.Global.SetWriter(old)
|
|
original := flogging.Global.SetWriter(nil)
|
|
|
|
require.Exactly(t, old, original)
|
|
}
|