You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
120 lines
3.0 KiB
120 lines
3.0 KiB
2 years ago
|
package log
|
||
|
|
||
|
import (
|
||
|
"bytes"
|
||
|
"context"
|
||
|
"fmt"
|
||
|
"os"
|
||
|
"strings"
|
||
|
"testing"
|
||
|
)
|
||
|
|
||
|
func TestGlobalLog(t *testing.T) {
|
||
|
buffer := &bytes.Buffer{}
|
||
|
logger := NewStdLogger(buffer)
|
||
|
SetLogger(logger)
|
||
|
|
||
|
if global.Logger != logger {
|
||
|
t.Error("GetLogger() is not equal to logger")
|
||
|
}
|
||
|
|
||
|
testCases := []struct {
|
||
|
level Level
|
||
|
content []interface{}
|
||
|
}{
|
||
|
{
|
||
|
LevelDebug,
|
||
|
[]interface{}{"test debug"},
|
||
|
},
|
||
|
{
|
||
|
LevelInfo,
|
||
|
[]interface{}{"test info"},
|
||
|
},
|
||
|
{
|
||
|
LevelInfo,
|
||
|
[]interface{}{"test %s", "info"},
|
||
|
},
|
||
|
{
|
||
|
LevelWarn,
|
||
|
[]interface{}{"test warn"},
|
||
|
},
|
||
|
{
|
||
|
LevelError,
|
||
|
[]interface{}{"test error"},
|
||
|
},
|
||
|
{
|
||
|
LevelError,
|
||
|
[]interface{}{"test %s", "error"},
|
||
|
},
|
||
|
}
|
||
|
|
||
|
expected := []string{}
|
||
|
for _, tc := range testCases {
|
||
|
msg := fmt.Sprintf(tc.content[0].(string), tc.content[1:]...)
|
||
|
switch tc.level {
|
||
|
case LevelDebug:
|
||
|
Debug(msg)
|
||
|
expected = append(expected, fmt.Sprintf("%s msg=%s", "DEBUG", msg))
|
||
|
Debugf(tc.content[0].(string), tc.content[1:]...)
|
||
|
expected = append(expected, fmt.Sprintf("%s msg=%s", "DEBUG", msg))
|
||
|
Debugw("log", msg)
|
||
|
expected = append(expected, fmt.Sprintf("%s log=%s", "DEBUG", msg))
|
||
|
case LevelInfo:
|
||
|
Info(msg)
|
||
|
expected = append(expected, fmt.Sprintf("%s msg=%s", "INFO", msg))
|
||
|
Infof(tc.content[0].(string), tc.content[1:]...)
|
||
|
expected = append(expected, fmt.Sprintf("%s msg=%s", "INFO", msg))
|
||
|
Infow("log", msg)
|
||
|
expected = append(expected, fmt.Sprintf("%s log=%s", "INFO", msg))
|
||
|
case LevelWarn:
|
||
|
Warn(msg)
|
||
|
expected = append(expected, fmt.Sprintf("%s msg=%s", "WARN", msg))
|
||
|
Warnf(tc.content[0].(string), tc.content[1:]...)
|
||
|
expected = append(expected, fmt.Sprintf("%s msg=%s", "WARN", msg))
|
||
|
Warnw("log", msg)
|
||
|
expected = append(expected, fmt.Sprintf("%s log=%s", "WARN", msg))
|
||
|
case LevelError:
|
||
|
Error(msg)
|
||
|
expected = append(expected, fmt.Sprintf("%s msg=%s", "ERROR", msg))
|
||
|
Errorf(tc.content[0].(string), tc.content[1:]...)
|
||
|
expected = append(expected, fmt.Sprintf("%s msg=%s", "ERROR", msg))
|
||
|
Errorw("log", msg)
|
||
|
expected = append(expected, fmt.Sprintf("%s log=%s", "ERROR", msg))
|
||
|
}
|
||
|
}
|
||
|
Log(LevelInfo, DefaultMessageKey, "test log")
|
||
|
expected = append(expected, fmt.Sprintf("%s msg=%s", "INFO", "test log"))
|
||
|
|
||
|
expected = append(expected, "")
|
||
|
|
||
|
t.Logf("Content: %s", buffer.String())
|
||
|
if buffer.String() != strings.Join(expected, "\n") {
|
||
|
t.Errorf("Expected: %s, got: %s", strings.Join(expected, "\n"), buffer.String())
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestGlobalLogUpdate(t *testing.T) {
|
||
|
l := &loggerAppliance{}
|
||
|
l.SetLogger(NewStdLogger(os.Stdout))
|
||
|
LOG := NewHelper(l)
|
||
|
LOG.Info("Log to stdout")
|
||
|
|
||
|
buffer := &bytes.Buffer{}
|
||
|
l.SetLogger(NewStdLogger(buffer))
|
||
|
LOG.Info("Log to buffer")
|
||
|
|
||
|
expected := "INFO msg=Log to buffer\n"
|
||
|
if buffer.String() != expected {
|
||
|
t.Errorf("Expected: %s, got: %s", expected, buffer.String())
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func TestGlobalContext(t *testing.T) {
|
||
|
buffer := &bytes.Buffer{}
|
||
|
SetLogger(NewStdLogger(buffer))
|
||
|
Context(context.Background()).Infof("111")
|
||
|
if buffer.String() != "INFO msg=111\n" {
|
||
|
t.Errorf("Expected:%s, got:%s", "INFO msg=111", buffer.String())
|
||
|
}
|
||
|
}
|