You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

logger.go 2.5 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. package logger
  2. import (
  3. "fmt"
  4. "os"
  5. "path/filepath"
  6. "strings"
  7. nested "github.com/antonfisher/nested-logrus-formatter"
  8. "github.com/sirupsen/logrus"
  9. )
  10. const (
  11. TRACE_LEVEL = "TRACE"
  12. DEBUG_LEVEL = "DEBUG"
  13. INFO_LEVEL = "INFO"
  14. WARN_LEVEL = "WARN"
  15. ERROR_LEVEL = "ERROR"
  16. FATAL_LEVEL = "FATAL"
  17. PANIC_LEVEL = "PANIC"
  18. OUTPUT_FILE = "FILE"
  19. OUTPUT_STDOUT = "STDOUT"
  20. )
  21. var loggerLevels = map[string]logrus.Level{
  22. TRACE_LEVEL: logrus.TraceLevel,
  23. DEBUG_LEVEL: logrus.DebugLevel,
  24. INFO_LEVEL: logrus.InfoLevel,
  25. WARN_LEVEL: logrus.WarnLevel,
  26. ERROR_LEVEL: logrus.ErrorLevel,
  27. FATAL_LEVEL: logrus.FatalLevel,
  28. PANIC_LEVEL: logrus.PanicLevel,
  29. }
  30. // Init 初始化全局默认的日志器
  31. func Init(cfg *Config) error {
  32. logrus.SetFormatter(&nested.Formatter{
  33. TimestampFormat: "2006-01-02 15:04:05",
  34. NoColors: true,
  35. NoFieldsColors: true,
  36. })
  37. level, ok := loggerLevels[strings.ToUpper(cfg.Level)]
  38. if !ok {
  39. return fmt.Errorf("invalid log level: %s", cfg.Level)
  40. }
  41. logrus.SetLevel(level)
  42. output := strings.ToUpper(cfg.Output)
  43. if output == OUTPUT_FILE {
  44. logFilePath := filepath.Join(cfg.OutputDirectory, cfg.OutputFileName+".log")
  45. if err := os.MkdirAll(cfg.OutputDirectory, 0644); err != nil {
  46. return err
  47. }
  48. file, err := os.OpenFile(logFilePath, os.O_APPEND|os.O_CREATE, 0644)
  49. if err != nil {
  50. return err
  51. }
  52. logrus.SetOutput(file)
  53. } else if output == OUTPUT_STDOUT {
  54. logrus.SetOutput(os.Stdout)
  55. } else {
  56. logrus.SetOutput(os.Stdout)
  57. logrus.Warnf("unsupported output: %s, will output to stdout", output)
  58. }
  59. return nil
  60. }
  61. func Debug(args ...interface{}) {
  62. logrus.Debug(args...)
  63. }
  64. func Debugf(format string, args ...interface{}) {
  65. logrus.Debugf(format, args...)
  66. }
  67. func Info(args ...interface{}) {
  68. logrus.Info(args...)
  69. }
  70. func Infof(format string, args ...interface{}) {
  71. logrus.Infof(format, args...)
  72. }
  73. func Warn(args ...interface{}) {
  74. logrus.Warn(args...)
  75. }
  76. func Warnf(format string, args ...interface{}) {
  77. logrus.Warnf(format, args...)
  78. }
  79. func Error(args ...interface{}) {
  80. logrus.Error(args...)
  81. }
  82. func Errorf(format string, args ...interface{}) {
  83. logrus.Errorf(format, args...)
  84. }
  85. func Fatal(args ...interface{}) {
  86. logrus.Fatal(args...)
  87. }
  88. func Fatalf(format string, args ...interface{}) {
  89. logrus.Fatalf(format, args...)
  90. }
  91. func Panic(args ...interface{}) {
  92. logrus.Panic(args...)
  93. }
  94. func Panicf(format string, args ...interface{}) {
  95. logrus.Panicf(format, args...)
  96. }
  97. func WithField(key string, val any) *logrus.Entry {
  98. return logrus.WithField(key, val)
  99. }

公共库

Contributors (1)