go-micro.dev/v5@v5.12.0/logger/helper.go (about) 1 package logger 2 3 import ( 4 "context" 5 "os" 6 ) 7 8 type Helper struct { 9 logger Logger 10 } 11 12 func NewHelper(logger Logger) *Helper { 13 return &Helper{logger: logger} 14 } 15 16 // Extract always returns valid Helper with logger from context or with DefaultLogger as fallback. 17 // Can be used in pair with function Inject. 18 // Example: propagate RequestID to logger in service handler methods. 19 func Extract(ctx context.Context) *Helper { 20 if l, ok := FromContext(ctx); ok { 21 return NewHelper(l) 22 } 23 24 return NewHelper(DefaultLogger) 25 } 26 27 func (h *Helper) Inject(ctx context.Context) context.Context { 28 return NewContext(ctx, h.logger) 29 } 30 31 func (h *Helper) Log(level Level, args ...interface{}) { 32 h.logger.Log(level, args...) 33 } 34 35 func (h *Helper) Logf(level Level, template string, args ...interface{}) { 36 h.logger.Logf(level, template, args...) 37 } 38 39 func (h *Helper) Info(args ...interface{}) { 40 if !h.logger.Options().Level.Enabled(InfoLevel) { 41 return 42 } 43 h.logger.Log(InfoLevel, args...) 44 } 45 46 func (h *Helper) Infof(template string, args ...interface{}) { 47 if !h.logger.Options().Level.Enabled(InfoLevel) { 48 return 49 } 50 h.logger.Logf(InfoLevel, template, args...) 51 } 52 53 func (h *Helper) Trace(args ...interface{}) { 54 if !h.logger.Options().Level.Enabled(TraceLevel) { 55 return 56 } 57 h.logger.Log(TraceLevel, args...) 58 } 59 60 func (h *Helper) Tracef(template string, args ...interface{}) { 61 if !h.logger.Options().Level.Enabled(TraceLevel) { 62 return 63 } 64 h.logger.Logf(TraceLevel, template, args...) 65 } 66 67 func (h *Helper) Debug(args ...interface{}) { 68 if !h.logger.Options().Level.Enabled(DebugLevel) { 69 return 70 } 71 h.logger.Log(DebugLevel, args...) 72 } 73 74 func (h *Helper) Debugf(template string, args ...interface{}) { 75 if !h.logger.Options().Level.Enabled(DebugLevel) { 76 return 77 } 78 h.logger.Logf(DebugLevel, template, args...) 79 } 80 81 func (h *Helper) Warn(args ...interface{}) { 82 if !h.logger.Options().Level.Enabled(WarnLevel) { 83 return 84 } 85 h.logger.Log(WarnLevel, args...) 86 } 87 88 func (h *Helper) Warnf(template string, args ...interface{}) { 89 if !h.logger.Options().Level.Enabled(WarnLevel) { 90 return 91 } 92 h.logger.Logf(WarnLevel, template, args...) 93 } 94 95 func (h *Helper) Error(args ...interface{}) { 96 if !h.logger.Options().Level.Enabled(ErrorLevel) { 97 return 98 } 99 h.logger.Log(ErrorLevel, args...) 100 } 101 102 func (h *Helper) Errorf(template string, args ...interface{}) { 103 if !h.logger.Options().Level.Enabled(ErrorLevel) { 104 return 105 } 106 h.logger.Logf(ErrorLevel, template, args...) 107 } 108 109 func (h *Helper) Fatal(args ...interface{}) { 110 if !h.logger.Options().Level.Enabled(FatalLevel) { 111 return 112 } 113 h.logger.Log(FatalLevel, args...) 114 os.Exit(1) 115 } 116 117 func (h *Helper) Fatalf(template string, args ...interface{}) { 118 if !h.logger.Options().Level.Enabled(FatalLevel) { 119 return 120 } 121 h.logger.Logf(FatalLevel, template, args...) 122 os.Exit(1) 123 } 124 125 func (h *Helper) WithError(err error) *Helper { 126 return &Helper{logger: h.logger.Fields(map[string]interface{}{"error": err})} 127 } 128 129 func (h *Helper) WithFields(fields map[string]interface{}) *Helper { 130 return &Helper{logger: h.logger.Fields(fields)} 131 } 132 133 func HelperOrDefault(h *Helper) *Helper { 134 if h == nil { 135 return DefaultHelper 136 } 137 return h 138 }