logger.go 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. package rocketmq
  2. import (
  3. "strings"
  4. "sync"
  5. "git.shuncheng.lu/bigthing/gocommon/pkg/internal/util"
  6. "git.shuncheng.lu/bigthing/gocommon/pkg/internal/file"
  7. "github.com/apache/rocketmq-client-go/v2/rlog"
  8. "github.com/sirupsen/logrus"
  9. )
  10. // 只允许初始化一次
  11. var (
  12. initLoggerOnce sync.Once
  13. )
  14. func initLogger(config *Config) {
  15. if config.LogFileName == "" {
  16. return
  17. }
  18. initLoggerOnce.Do(func() {
  19. logger, err := newRocketLogger(config.LogLevel, file.NewDefaultRotateWriter(config.LogFileName))
  20. if err != nil {
  21. panic(err)
  22. }
  23. rlog.SetLogger(logger)
  24. })
  25. }
  26. func newRocketLogger(level string, config file.RotateWriterConfig) (rlog.Logger, error) {
  27. r := &defaultLogger{
  28. logger: logrus.New(),
  29. }
  30. switch strings.ToLower(level) {
  31. case "debug":
  32. r.logger.SetLevel(logrus.DebugLevel)
  33. case "warn":
  34. r.logger.SetLevel(logrus.WarnLevel)
  35. case "error":
  36. r.logger.SetLevel(logrus.ErrorLevel)
  37. default:
  38. r.logger.SetLevel(logrus.InfoLevel)
  39. }
  40. writer, err := config.NewWriter()
  41. if err != nil {
  42. return nil, err
  43. }
  44. r.logger.Out = writer
  45. util.Infof("[Rocket-MQ] init logger success, level: %v, filename: %v", r.logger.Level, config.FileName)
  46. return r, nil
  47. }
  48. // copy https://github.com/apache/rocketmq-client-go/blob/v2.0.0/rlog/log.go#L66
  49. type defaultLogger struct {
  50. logger *logrus.Logger
  51. }
  52. func (l *defaultLogger) Debug(msg string, fields map[string]interface{}) {
  53. if msg == "" && len(fields) == 0 {
  54. return
  55. }
  56. l.logger.WithFields(fields).Debug(msg)
  57. }
  58. func (l *defaultLogger) Info(msg string, fields map[string]interface{}) {
  59. if msg == "" && len(fields) == 0 {
  60. return
  61. }
  62. l.logger.WithFields(fields).Info(msg)
  63. }
  64. func (l *defaultLogger) Warning(msg string, fields map[string]interface{}) {
  65. if msg == "" && len(fields) == 0 {
  66. return
  67. }
  68. l.logger.WithFields(fields).Warning(msg)
  69. }
  70. func (l *defaultLogger) Error(msg string, fields map[string]interface{}) {
  71. if msg == "" && len(fields) == 0 {
  72. return
  73. }
  74. l.logger.WithFields(fields).WithFields(fields).Error(msg)
  75. }
  76. func (l *defaultLogger) Fatal(msg string, fields map[string]interface{}) {
  77. if msg == "" && len(fields) == 0 {
  78. return
  79. }
  80. l.logger.WithFields(fields).Fatal(msg)
  81. }