gitee.com/sasukebo/go-micro/v4@v4.7.1/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  }