github.com/qiniu/go-sdk/v7@v7.27.0/internal/log/logger.go (about)

     1  // Package log只是SDK本身自己使用,用来调试代码使用,比如输出HTTP请求和响应信息
     2  package log
     3  
     4  import (
     5  	"io"
     6  	"log"
     7  	"os"
     8  )
     9  
    10  type Logger struct {
    11  	*log.Logger
    12  	level LogLevel
    13  }
    14  
    15  // New 返回一个Logger 指针
    16  func New(out io.Writer, prefix string, flag int, level LogLevel) *Logger {
    17  	return &Logger{
    18  		Logger: log.New(out, prefix, flag),
    19  		level:  level,
    20  	}
    21  }
    22  
    23  var (
    24  	std  = New(os.Stdout, DebugPrefix, log.LstdFlags, LogDebug)
    25  	info = New(os.Stdout, InfoPrefix, log.LstdFlags, LogInfo)
    26  	warn = New(os.Stdout, WarnPrefix, log.LstdFlags, LogWarn)
    27  )
    28  
    29  type LogLevel int
    30  
    31  const (
    32  	// LogDebug 调试模式
    33  	LogDebug LogLevel = iota
    34  
    35  	// Info
    36  	LogInfo
    37  
    38  	// Warn
    39  	LogWarn
    40  )
    41  
    42  const (
    43  	InfoPrefix  = "[I] "
    44  	DebugPrefix = "[D] "
    45  	WarnPrefix  = "[W] "
    46  )
    47  
    48  func (l *Logger) Info(v ...interface{}) {
    49  	l.output(LogInfo, v...)
    50  }
    51  
    52  func (l *Logger) output(level LogLevel, v ...interface{}) {
    53  	if l.level <= level {
    54  		l.Logger.Println(v...)
    55  	}
    56  }
    57  
    58  func (l *Logger) Debug(v ...interface{}) {
    59  	l.output(LogDebug, v...)
    60  }
    61  
    62  func (l *Logger) Warn(v ...interface{}) {
    63  	l.output(LogWarn, v...)
    64  }
    65  
    66  func Debug(v ...interface{}) {
    67  	std.Debug(v...)
    68  }
    69  
    70  func Info(v ...interface{}) {
    71  	info.Info(v...)
    72  }
    73  
    74  func Warn(v ...interface{}) {
    75  	warn.Warn(v...)
    76  }