logger.go 991 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. package logger
  2. import (
  3. nested "github.com/antonfisher/nested-logrus-formatter"
  4. log "github.com/sirupsen/logrus"
  5. "io"
  6. "os"
  7. )
  8. const (
  9. DebugMode = "debug"
  10. ReleaseMode = "release"
  11. )
  12. type Config struct {
  13. Path string
  14. Level string
  15. ReportCaller bool
  16. }
  17. func New(c *Config) *log.Logger {
  18. log.SetFormatter(&nested.Formatter{
  19. // HideKeys: true,
  20. TimestampFormat: "2006-01-02 15:04:05",
  21. NoColors: true,
  22. NoFieldsColors: true,
  23. //FieldsOrder: []string{"name", "age"},
  24. })
  25. // 日志文件
  26. f := c.Path
  27. var write io.Writer
  28. if f != "" {
  29. fwriter, err := os.OpenFile(f, os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0644)
  30. if err != nil {
  31. panic("open log file fail!")
  32. }
  33. write = io.MultiWriter(fwriter, os.Stdout)
  34. } else {
  35. write = os.Stdout
  36. }
  37. log.SetOutput(write)
  38. log.SetReportCaller(c.ReportCaller)
  39. level, err2 := log.ParseLevel(c.Level)
  40. if err2 != nil {
  41. level = log.DebugLevel
  42. }
  43. log.SetLevel(level)
  44. return log.StandardLogger()
  45. }