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, ) } }