github.com/cloud-foundations/dominator@v0.0.0-20221004181915-6e4fee580046/lib/log/teelogger/api.go (about) 1 package teelogger 2 3 import ( 4 "fmt" 5 6 "github.com/Cloud-Foundations/Dominator/lib/log" 7 "github.com/Cloud-Foundations/Dominator/lib/log/debuglogger" 8 ) 9 10 type flusher interface { 11 Flush() error 12 } 13 14 type Logger struct { 15 one log.DebugLogger 16 two log.DebugLogger 17 } 18 19 func New(one, two log.Logger) *Logger { 20 return &Logger{debuglogger.Upgrade(one), debuglogger.Upgrade(two)} 21 } 22 23 func (l *Logger) Debug(level uint8, v ...interface{}) { 24 l.one.Debug(level, v...) 25 l.two.Debug(level, v...) 26 } 27 28 func (l *Logger) Debugf(level uint8, format string, v ...interface{}) { 29 l.one.Debugf(level, format, v...) 30 l.two.Debugf(level, format, v...) 31 } 32 33 func (l *Logger) Debugln(level uint8, v ...interface{}) { 34 l.one.Debugln(level, v...) 35 l.two.Debugln(level, v...) 36 } 37 38 func (l *Logger) Fatal(v ...interface{}) { 39 msg := fmt.Sprint(v...) 40 l.one.Print(msg) 41 if fl, ok := l.one.(flusher); ok { 42 fl.Flush() 43 } 44 l.two.Fatal(msg) 45 } 46 47 func (l *Logger) Fatalf(format string, v ...interface{}) { 48 msg := fmt.Sprintf(format, v...) 49 l.one.Print(msg) 50 if fl, ok := l.one.(flusher); ok { 51 fl.Flush() 52 } 53 l.two.Fatal(msg) 54 } 55 56 func (l *Logger) Fatalln(v ...interface{}) { 57 msg := fmt.Sprintln(v...) 58 l.one.Print(msg) 59 if fl, ok := l.one.(flusher); ok { 60 fl.Flush() 61 } 62 l.two.Fatal(msg) 63 } 64 65 func (l *Logger) Panic(v ...interface{}) { 66 msg := fmt.Sprint(v...) 67 l.one.Print(msg) 68 l.two.Panic(msg) 69 } 70 71 func (l *Logger) Panicf(format string, v ...interface{}) { 72 msg := fmt.Sprintf(format, v...) 73 l.one.Print(msg) 74 l.two.Panic(msg) 75 } 76 77 func (l *Logger) Panicln(v ...interface{}) { 78 msg := fmt.Sprintln(v...) 79 l.one.Print(msg) 80 l.two.Panic(msg) 81 } 82 83 func (l *Logger) Print(v ...interface{}) { 84 msg := fmt.Sprint(v...) 85 l.one.Print(msg) 86 l.two.Print(msg) 87 } 88 89 func (l *Logger) Printf(format string, v ...interface{}) { 90 msg := fmt.Sprintf(format, v...) 91 l.one.Print(msg) 92 l.two.Print(msg) 93 } 94 95 func (l *Logger) Println(v ...interface{}) { 96 msg := fmt.Sprintln(v...) 97 l.one.Print(msg) 98 l.two.Print(msg) 99 }