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 }