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.

global_logger.go 2.2 kB

2 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  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. myreflect "gitlink.org.cn/cloudream/common/utils/reflect"
  10. )
  11. // Init 初始化全局默认的日志器
  12. func Init(cfg *Config) error {
  13. logrus.SetFormatter(&nested.Formatter{
  14. TimestampFormat: "2006-01-02 15:04:05",
  15. NoColors: true,
  16. NoFieldsColors: true,
  17. })
  18. level, ok := loggerLevels[strings.ToUpper(cfg.Level)]
  19. if !ok {
  20. return fmt.Errorf("invalid log level: %s", cfg.Level)
  21. }
  22. logrus.SetLevel(level)
  23. output := strings.ToUpper(cfg.Output)
  24. if output == OUTPUT_FILE {
  25. logFilePath := filepath.Join(cfg.OutputDirectory, cfg.OutputFileName+".log")
  26. if err := os.MkdirAll(cfg.OutputDirectory, 0644); err != nil {
  27. return err
  28. }
  29. file, err := os.OpenFile(logFilePath, os.O_APPEND|os.O_CREATE, 0644)
  30. if err != nil {
  31. return err
  32. }
  33. logrus.SetOutput(file)
  34. } else if output == OUTPUT_STDOUT {
  35. logrus.SetOutput(os.Stdout)
  36. } else {
  37. logrus.SetOutput(os.Stdout)
  38. logrus.Warnf("unsupported output: %s, will output to stdout", output)
  39. }
  40. return nil
  41. }
  42. func Debug(args ...interface{}) {
  43. logrus.Debug(args...)
  44. }
  45. func Debugf(format string, args ...interface{}) {
  46. logrus.Debugf(format, args...)
  47. }
  48. func Info(args ...interface{}) {
  49. logrus.Info(args...)
  50. }
  51. func Infof(format string, args ...interface{}) {
  52. logrus.Infof(format, args...)
  53. }
  54. func Warn(args ...interface{}) {
  55. logrus.Warn(args...)
  56. }
  57. func Warnf(format string, args ...interface{}) {
  58. logrus.Warnf(format, args...)
  59. }
  60. func Error(args ...interface{}) {
  61. logrus.Error(args...)
  62. }
  63. func Errorf(format string, args ...interface{}) {
  64. logrus.Errorf(format, args...)
  65. }
  66. func Fatal(args ...interface{}) {
  67. logrus.Fatal(args...)
  68. }
  69. func Fatalf(format string, args ...interface{}) {
  70. logrus.Fatalf(format, args...)
  71. }
  72. func Panic(args ...interface{}) {
  73. logrus.Panic(args...)
  74. }
  75. func Panicf(format string, args ...interface{}) {
  76. logrus.Panicf(format, args...)
  77. }
  78. func WithField(key string, val any) Logger {
  79. return &logrusLogger{
  80. entry: logrus.WithField(key, val),
  81. }
  82. }
  83. func WithType[T any](key string) Logger {
  84. return &logrusLogger{
  85. entry: logrus.WithField(key, myreflect.TypeOf[T]().Name()),
  86. }
  87. }

公共库

Contributors (1)