github.com/ipfans/trojan-go@v0.11.0/log/log.go (about) 1 package log 2 3 import ( 4 "io" 5 "os" 6 ) 7 8 // LogLevel how much log to dump 9 // 0: ALL; 1: INFO; 2: WARN; 3: ERROR; 4: FATAL; 5: OFF 10 type LogLevel int 11 12 const ( 13 AllLevel LogLevel = 0 14 InfoLevel LogLevel = 1 15 WarnLevel LogLevel = 2 16 ErrorLevel LogLevel = 3 17 FatalLevel LogLevel = 4 18 OffLevel LogLevel = 5 19 ) 20 21 type Logger interface { 22 Fatal(v ...interface{}) 23 Fatalf(format string, v ...interface{}) 24 Error(v ...interface{}) 25 Errorf(format string, v ...interface{}) 26 Warn(v ...interface{}) 27 Warnf(format string, v ...interface{}) 28 Info(v ...interface{}) 29 Infof(format string, v ...interface{}) 30 Debug(v ...interface{}) 31 Debugf(format string, v ...interface{}) 32 Trace(v ...interface{}) 33 Tracef(format string, v ...interface{}) 34 SetLogLevel(level LogLevel) 35 SetOutput(io.Writer) 36 } 37 38 var logger Logger = &EmptyLogger{} 39 40 type EmptyLogger struct{} 41 42 func (l *EmptyLogger) SetLogLevel(LogLevel) {} 43 44 func (l *EmptyLogger) Fatal(v ...interface{}) { os.Exit(1) } 45 46 func (l *EmptyLogger) Fatalf(format string, v ...interface{}) { os.Exit(1) } 47 48 func (l *EmptyLogger) Error(v ...interface{}) {} 49 50 func (l *EmptyLogger) Errorf(format string, v ...interface{}) {} 51 52 func (l *EmptyLogger) Warn(v ...interface{}) {} 53 54 func (l *EmptyLogger) Warnf(format string, v ...interface{}) {} 55 56 func (l *EmptyLogger) Info(v ...interface{}) {} 57 58 func (l *EmptyLogger) Infof(format string, v ...interface{}) {} 59 60 func (l *EmptyLogger) Debug(v ...interface{}) {} 61 62 func (l *EmptyLogger) Debugf(format string, v ...interface{}) {} 63 64 func (l *EmptyLogger) Trace(v ...interface{}) {} 65 66 func (l *EmptyLogger) Tracef(format string, v ...interface{}) {} 67 68 func (l *EmptyLogger) SetOutput(w io.Writer) {} 69 70 func Error(v ...interface{}) { 71 logger.Error(v...) 72 } 73 74 func Errorf(format string, v ...interface{}) { 75 logger.Errorf(format, v...) 76 } 77 78 func Warn(v ...interface{}) { 79 logger.Warn(v...) 80 } 81 82 func Warnf(format string, v ...interface{}) { 83 logger.Warnf(format, v...) 84 } 85 86 func Info(v ...interface{}) { 87 logger.Info(v...) 88 } 89 90 func Infof(format string, v ...interface{}) { 91 logger.Infof(format, v...) 92 } 93 94 func Debug(v ...interface{}) { 95 logger.Debug(v...) 96 } 97 98 func Debugf(format string, v ...interface{}) { 99 logger.Debugf(format, v...) 100 } 101 102 func Trace(v ...interface{}) { 103 logger.Trace(v...) 104 } 105 106 func Tracef(format string, v ...interface{}) { 107 logger.Tracef(format, v...) 108 } 109 110 func Fatal(v ...interface{}) { 111 logger.Fatal(v...) 112 } 113 114 func Fatalf(format string, v ...interface{}) { 115 logger.Fatalf(format, v...) 116 } 117 118 func SetLogLevel(level LogLevel) { 119 logger.SetLogLevel(level) 120 } 121 122 func SetOutput(w io.Writer) { 123 logger.SetOutput(w) 124 } 125 126 func RegisterLogger(l Logger) { 127 logger = l 128 }