github.com/keybase/client/go@v0.0.0-20240309051027-028f7c731f8b/logger/logger.go (about) 1 // Copyright 2015 Keybase, Inc. All rights reserved. Use of 2 // this source code is governed by the included BSD license. 3 4 package logger 5 6 import ( 7 "log" 8 9 keybase1 "github.com/keybase/client/go/protocol/keybase1" 10 "golang.org/x/net/context" 11 ) 12 13 type ExternalHandler interface { 14 Log(level keybase1.LogLevel, format string, args []interface{}) 15 } 16 17 type BaseLogger interface { 18 Debug(format string, args ...interface{}) 19 Info(format string, args ...interface{}) 20 Warning(format string, args ...interface{}) 21 Error(format string, args ...interface{}) 22 } 23 24 type ContextInterface interface { 25 BaseLogger 26 Ctx() context.Context 27 UpdateContextToLoggerContext(context.Context) ContextInterface 28 } 29 30 type Logger interface { 31 BaseLogger 32 // CDebugf logs a message at debug level, with a context and 33 // formatting args. 34 CDebugf(ctx context.Context, format string, args ...interface{}) 35 // CInfo logs a message at info level, with a context and formatting args. 36 CInfof(ctx context.Context, format string, args ...interface{}) 37 // Notice logs a message at notice level, with formatting args. 38 Notice(format string, args ...interface{}) 39 // CNoticef logs a message at notice level, with a context and 40 // formatting args. 41 CNoticef(ctx context.Context, format string, args ...interface{}) 42 // Warning logs a message at warning level, with formatting args. 43 CWarningf(ctx context.Context, format string, args ...interface{}) 44 // Error logs a message at error level, with formatting args 45 Errorf(format string, args ...interface{}) 46 // CErrorf logs a message at error level, with a context and 47 // formatting args. 48 CErrorf(ctx context.Context, format string, args ...interface{}) 49 // Critical logs a message at critical level, with formatting args. 50 Critical(format string, args ...interface{}) 51 // CCriticalf logs a message at critical level, with a context and 52 // formatting args. 53 CCriticalf(ctx context.Context, format string, args ...interface{}) 54 // Fatalf logs a message at fatal level, with formatting args. 55 Fatalf(format string, args ...interface{}) 56 // Fatalf logs a message at fatal level, with a context and formatting args. 57 CFatalf(ctx context.Context, format string, args ...interface{}) 58 // Profile logs a profile message, with formatting args. 59 Profile(fmts string, arg ...interface{}) 60 61 // Returns a logger that is like the current one, except with 62 // more logging depth added on. 63 CloneWithAddedDepth(depth int) Logger 64 // Configure sets the style, debug level, and filename of the 65 // logger. Output isn't redirected to the file until 66 // the log file rotation is configured. 67 Configure(style string, debug bool, filename string) 68 69 // SetExternalHandler sets a handler that will be called with every log message. 70 SetExternalHandler(handler ExternalHandler) 71 } 72 73 type InternalLogger struct { 74 log *log.Logger 75 } 76 77 func NewInternalLogger(log *log.Logger) *InternalLogger { 78 return &InternalLogger{ 79 log: log, 80 } 81 } 82 83 func (l *InternalLogger) Debug(fmt string, arg ...interface{}) { 84 l.log.Printf(fmt, arg...) 85 } 86 87 func (l *InternalLogger) CDebugf(ctx context.Context, fmt string, 88 arg ...interface{}) { 89 l.log.Printf(prepareString(ctx, fmt), arg...) 90 } 91 92 func (l *InternalLogger) Info(fmt string, arg ...interface{}) { 93 l.log.Printf(keybase1.LogLevel_INFO.String()+fmt, arg...) 94 } 95 96 func (l *InternalLogger) CInfof(ctx context.Context, fmt string, 97 arg ...interface{}) { 98 l.log.Printf(keybase1.LogLevel_INFO.String()+prepareString(ctx, fmt), arg...) 99 } 100 101 func (l *InternalLogger) Notice(fmt string, arg ...interface{}) { 102 l.log.Printf(keybase1.LogLevel_NOTICE.String()+fmt, arg...) 103 } 104 105 func (l *InternalLogger) CNoticef(ctx context.Context, fmt string, 106 arg ...interface{}) { 107 l.log.Printf(keybase1.LogLevel_NOTICE.String()+prepareString(ctx, fmt), arg...) 108 } 109 110 func (l *InternalLogger) Warning(fmt string, arg ...interface{}) { 111 l.log.Printf(keybase1.LogLevel_WARN.String()+fmt, arg...) 112 } 113 114 func (l *InternalLogger) CWarningf(ctx context.Context, fmt string, 115 arg ...interface{}) { 116 l.log.Printf(keybase1.LogLevel_WARN.String()+prepareString(ctx, fmt), arg...) 117 } 118 119 func (l *InternalLogger) Error(fmt string, arg ...interface{}) { 120 l.log.Printf(keybase1.LogLevel_ERROR.String()+fmt, arg...) 121 } 122 123 func (l *InternalLogger) Errorf(fmt string, arg ...interface{}) { 124 l.log.Printf(keybase1.LogLevel_ERROR.String()+fmt, arg...) 125 } 126 127 func (l *InternalLogger) CErrorf(ctx context.Context, fmt string, 128 arg ...interface{}) { 129 l.log.Printf(keybase1.LogLevel_ERROR.String()+prepareString(ctx, fmt), arg...) 130 } 131 132 func (l *InternalLogger) Critical(fmt string, arg ...interface{}) { 133 l.log.Printf(keybase1.LogLevel_CRITICAL.String()+fmt, arg...) 134 } 135 136 func (l *InternalLogger) CCriticalf(ctx context.Context, fmt string, 137 arg ...interface{}) { 138 l.log.Printf(keybase1.LogLevel_CRITICAL.String()+prepareString(ctx, fmt), arg...) 139 } 140 141 func (l *InternalLogger) Fatalf(fmt string, arg ...interface{}) { 142 l.log.Fatalf(fmt, arg...) 143 } 144 145 func (l *InternalLogger) CFatalf(ctx context.Context, fmt string, 146 arg ...interface{}) { 147 l.log.Fatalf(prepareString(ctx, fmt), arg...) 148 } 149 150 func (l *InternalLogger) Profile(fmts string, arg ...interface{}) { 151 l.log.Printf(keybase1.LogLevel_DEBUG.String()+fmts, arg...) 152 } 153 func (l *InternalLogger) Configure(style string, debug bool, filename string) {} 154 func (l *InternalLogger) SetExternalHandler(handler ExternalHandler) {} 155 func (l *InternalLogger) CloneWithAddedDepth(depth int) Logger { 156 return l 157 }