Files
nested/formatter_test.go
2026-03-29 18:18:36 +03:00

331 lines
6.7 KiB
Go

package nested
import (
"bytes"
"fmt"
"os"
"path"
"regexp"
"runtime"
"strings"
"testing"
"git.corp.kornet35.ru/gopkg/logrus"
)
func ExampleFormatter_Format_default() {
l := logrus.New()
l.SetOutput(os.Stdout)
l.SetLevel(logrus.DebugLevel)
l.SetFormatter(&Formatter{
NoColors: true,
TimestampFormat: "-",
})
l.Debug("test1")
l.Info("test2")
l.Warn("test3")
l.Error("test4")
// Output:
// - [DEBU] test1
// - [INFO] test2
// - [WARN] test3
// - [ERRO] test4
}
func ExampleFormatter_Format_full_level() {
l := logrus.New()
l.SetOutput(os.Stdout)
l.SetLevel(logrus.DebugLevel)
l.SetFormatter(&Formatter{
NoColors: true,
TimestampFormat: "-",
ShowFullLevel: true,
})
l.Debug("test1")
l.Info("test2")
l.Warn("test3")
l.Error(" test4")
// Output:
// - [DEBUG] test1
// - [INFO] test2
// - [WARNING] test3
// - [ERROR] test4
}
func ExampleFormatter_Format_show_keys() {
l := logrus.New()
l.SetOutput(os.Stdout)
l.SetLevel(logrus.DebugLevel)
l.SetFormatter(&Formatter{
NoColors: true,
TimestampFormat: "-",
HideKeys: false,
})
ll := l.WithField("category", "rest")
l.Info("test1")
ll.Info("test2")
// Output:
// - [INFO] test1
// - [INFO] [category:rest] test2
}
func ExampleFormatter_Format_hide_keys() {
l := logrus.New()
l.SetOutput(os.Stdout)
l.SetLevel(logrus.DebugLevel)
l.SetFormatter(&Formatter{
NoColors: true,
TimestampFormat: "-",
HideKeys: true,
})
ll := l.WithField("category", "rest")
l.Info("test1")
ll.Info("test2")
// Output:
// - [INFO] test1
// - [INFO] [rest] test2
}
func ExampleFormatter_Format_sort_order() {
l := logrus.New()
l.SetOutput(os.Stdout)
l.SetLevel(logrus.DebugLevel)
l.SetFormatter(&Formatter{
NoColors: true,
TimestampFormat: "-",
HideKeys: false,
})
ll := l.WithField("component", "main")
lll := ll.WithField("category", "rest")
l.Info("test1")
ll.Info("test2")
lll.Info("test3")
// Output:
// - [INFO] test1
// - [INFO] [component:main] test2
// - [INFO] [category:rest] [component:main] test3
}
func ExampleFormatter_Format_field_order() {
l := logrus.New()
l.SetOutput(os.Stdout)
l.SetLevel(logrus.DebugLevel)
l.SetFormatter(&Formatter{
NoColors: true,
TimestampFormat: "-",
FieldsOrder: []string{"component", "category"},
HideKeys: false,
})
ll := l.WithField("component", "main")
lll := ll.WithField("category", "rest")
l.Info("test1")
ll.Info("test2")
lll.Info("test3")
// Output:
// - [INFO] test1
// - [INFO] [component:main] test2
// - [INFO] [component:main] [category:rest] test3
}
func ExampleFormatter_Format_no_fields_space() {
l := logrus.New()
l.SetOutput(os.Stdout)
l.SetLevel(logrus.DebugLevel)
l.SetFormatter(&Formatter{
NoColors: true,
TimestampFormat: "-",
FieldsOrder: []string{"component", "category"},
HideKeys: false,
NoFieldsSpace: true,
})
ll := l.WithField("component", "main")
lll := ll.WithField("category", "rest")
l.Info("test1")
ll.Info("test2")
lll.Info("test3")
// Output:
// - [INFO] test1
// - [INFO][component:main] test2
// - [INFO][component:main][category:rest] test3
}
func ExampleFormatter_Format_no_uppercase_level() {
l := logrus.New()
l.SetOutput(os.Stdout)
l.SetLevel(logrus.DebugLevel)
l.SetFormatter(&Formatter{
NoColors: true,
TimestampFormat: "-",
FieldsOrder: []string{"component", "category"},
NoUppercaseLevel: true,
})
ll := l.WithField("component", "main")
lll := ll.WithField("category", "rest")
llll := ll.WithField("category", "other")
l.Debug("test1")
ll.Info("test2")
lll.Warn("test3")
llll.Error("test4")
// Output:
// - [debu] test1
// - [info] [component:main] test2
// - [warn] [component:main] [category:rest] test3
// - [erro] [component:main] [category:other] test4
}
func ExampleFormatter_Format_trim_message() {
l := logrus.New()
l.SetOutput(os.Stdout)
l.SetLevel(logrus.DebugLevel)
l.SetFormatter(&Formatter{
TrimMessages: true,
NoColors: true,
TimestampFormat: "-",
})
l.Debug(" test1 ")
l.Info("test2 ")
l.Warn(" test3")
l.Error(" test4 ")
// Output:
// - [DEBU] test1
// - [INFO] test2
// - [WARN] test3
// - [ERRO] test4
}
func TestFormatter_Format_with_report_caller(t *testing.T) {
output := bytes.NewBuffer([]byte{})
l := logrus.New()
l.SetOutput(output)
l.SetLevel(logrus.DebugLevel)
l.SetFormatter(&Formatter{
NoColors: true,
TimestampFormat: "-",
})
l.SetReportCaller(true)
l.Debug("test1")
line, err := output.ReadString('\n')
if err != nil {
t.Errorf("Cannot read log output: %v", err)
}
expectedRegExp := "- \\[DEBU\\] test1 \\(.+\\.go:[0-9]+ .+\\)\n$"
match, err := regexp.MatchString(
expectedRegExp,
line,
)
if err != nil {
t.Errorf("Cannot check regexp: %v", err)
} else if !match {
t.Errorf(
"logger.SetReportCaller(true) output doesn't match, expected: %s to find in: '%s'",
expectedRegExp,
line,
)
}
}
func TestFormatter_Format_with_report_caller_and_CallerFirst_true(t *testing.T) {
output := bytes.NewBuffer([]byte{})
l := logrus.New()
l.SetOutput(output)
l.SetLevel(logrus.DebugLevel)
l.SetFormatter(&Formatter{
NoColors: true,
TimestampFormat: "-",
CallerFirst: true,
})
l.SetReportCaller(true)
l.Debug("test1")
line, err := output.ReadString('\n')
if err != nil {
t.Errorf("Cannot read log output: %v", err)
}
expectedRegExp := "- \\(.+\\.go:[0-9]+ .+\\) \\[DEBU\\] test1\n$"
match, err := regexp.MatchString(
expectedRegExp,
line,
)
if err != nil {
t.Errorf("Cannot check regexp: %v", err)
} else if !match {
t.Errorf(
"logger.SetReportCaller(true) output doesn't match, expected: %s to find in: '%s'",
expectedRegExp,
line,
)
}
}
func TestFormatter_Format_with_report_caller_and_CustomCallerFormatter(t *testing.T) {
output := bytes.NewBuffer([]byte{})
l := logrus.New()
l.SetOutput(output)
l.SetLevel(logrus.DebugLevel)
l.SetFormatter(&Formatter{
NoColors: true,
TimestampFormat: "-",
CallerFirst: true,
CustomCallerFormatter: func(f *runtime.Frame) string {
s := strings.Split(f.Function, ".")
funcName := s[len(s)-1]
return fmt.Sprintf(" [%s:%d][%s()]", path.Base(f.File), f.Line, funcName)
},
})
l.SetReportCaller(true)
l.Debug("test1")
line, err := output.ReadString('\n')
if err != nil {
t.Errorf("Cannot read log output: %v", err)
}
expectedRegExp := "- \\[.+\\.go:[0-9]+\\]\\[.+\\(\\)\\] \\[DEBU\\] test1\n$"
match, err := regexp.MatchString(
expectedRegExp,
line,
)
if err != nil {
t.Errorf("Cannot check regexp: %v", err)
} else if !match {
t.Errorf(
"logger.SetReportCaller(true) output doesn't match, expected: %s to find in: '%s'",
expectedRegExp,
line,
)
}
}