gitee.com/liuxuezhan/go-micro-v1.18.0@v1.0.0/util/log/log.go (about)

     1  // Package log is a global internal logger
     2  package log
     3  
     4  import (
     5  	"fmt"
     6  	"os"
     7  
     8  	"github.com/go-log/log"
     9  	golog "github.com/go-log/log/log"
    10  )
    11  
    12  // level is a log level
    13  type Level int
    14  
    15  const (
    16  	LevelFatal Level = iota
    17  	LevelError
    18  	LevelInfo
    19  	LevelWarn
    20  	LevelDebug
    21  	LevelTrace
    22  )
    23  
    24  var (
    25  	// the local logger
    26  	logger log.Logger = golog.New()
    27  
    28  	// default log level is info
    29  	level = LevelInfo
    30  
    31  	// prefix for all messages
    32  	prefix string
    33  )
    34  
    35  func init() {
    36  	switch os.Getenv("MICRO_LOG_LEVEL") {
    37  	case "trace":
    38  		level = LevelTrace
    39  	case "debug":
    40  		level = LevelDebug
    41  	case "warn":
    42  		level = LevelWarn
    43  	case "info":
    44  		level = LevelInfo
    45  	case "error":
    46  		level = LevelError
    47  	case "fatal":
    48  		level = LevelFatal
    49  	}
    50  }
    51  
    52  // Log makes use of github.com/go-log/log.Log
    53  func Log(v ...interface{}) {
    54  	if len(prefix) > 0 {
    55  		logger.Log(append([]interface{}{prefix, " "}, v...)...)
    56  		return
    57  	}
    58  	logger.Log(v...)
    59  }
    60  
    61  // Logf makes use of github.com/go-log/log.Logf
    62  func Logf(format string, v ...interface{}) {
    63  	if len(prefix) > 0 {
    64  		format = prefix + " " + format
    65  	}
    66  	logger.Logf(format, v...)
    67  }
    68  
    69  // WithLevel logs with the level specified
    70  func WithLevel(l Level, v ...interface{}) {
    71  	if l > level {
    72  		return
    73  	}
    74  	Log(v...)
    75  }
    76  
    77  // WithLevel logs with the level specified
    78  func WithLevelf(l Level, format string, v ...interface{}) {
    79  	if l > level {
    80  		return
    81  	}
    82  	Logf(format, v...)
    83  }
    84  
    85  // Trace provides trace level logging
    86  func Trace(v ...interface{}) {
    87  	WithLevel(LevelTrace, v...)
    88  }
    89  
    90  // Tracef provides trace level logging
    91  func Tracef(format string, v ...interface{}) {
    92  	WithLevelf(LevelTrace, format, v...)
    93  }
    94  
    95  // Debug provides debug level logging
    96  func Debug(v ...interface{}) {
    97  	WithLevel(LevelDebug, v...)
    98  }
    99  
   100  // Debugf provides debug level logging
   101  func Debugf(format string, v ...interface{}) {
   102  	WithLevelf(LevelDebug, format, v...)
   103  }
   104  
   105  // Warn provides warn level logging
   106  func Warn(v ...interface{}) {
   107  	WithLevel(LevelWarn, v...)
   108  }
   109  
   110  // Warnf provides warn level logging
   111  func Warnf(format string, v ...interface{}) {
   112  	WithLevelf(LevelWarn, format, v...)
   113  }
   114  
   115  // Info provides info level logging
   116  func Info(v ...interface{}) {
   117  	WithLevel(LevelInfo, v...)
   118  }
   119  
   120  // Infof provides info level logging
   121  func Infof(format string, v ...interface{}) {
   122  	WithLevelf(LevelInfo, format, v...)
   123  }
   124  
   125  // Error provides warn level logging
   126  func Error(v ...interface{}) {
   127  	WithLevel(LevelError, v...)
   128  }
   129  
   130  // Errorf provides warn level logging
   131  func Errorf(format string, v ...interface{}) {
   132  	WithLevelf(LevelError, format, v...)
   133  }
   134  
   135  // Fatal logs with Log and then exits with os.Exit(1)
   136  func Fatal(v ...interface{}) {
   137  	WithLevel(LevelFatal, v...)
   138  	os.Exit(1)
   139  }
   140  
   141  // Fatalf logs with Logf and then exits with os.Exit(1)
   142  func Fatalf(format string, v ...interface{}) {
   143  	WithLevelf(LevelFatal, format, v...)
   144  	os.Exit(1)
   145  }
   146  
   147  // SetLogger sets the local logger
   148  func SetLogger(l log.Logger) {
   149  	logger = l
   150  }
   151  
   152  // GetLogger returns the local logger
   153  func GetLogger() log.Logger {
   154  	return logger
   155  }
   156  
   157  // SetLevel sets the log level
   158  func SetLevel(l Level) {
   159  	level = l
   160  }
   161  
   162  // GetLevel returns the current level
   163  func GetLevel() Level {
   164  	return level
   165  }
   166  
   167  // Set a prefix for the logger
   168  func SetPrefix(p string) {
   169  	prefix = p
   170  }
   171  
   172  // Set service name
   173  func Name(name string) {
   174  	prefix = fmt.Sprintf("[%s]", name)
   175  }