Skip to content

Commit 4f6763c

Browse files
vardhanapoorvIbrahim Jarif
and
Ibrahim Jarif
authored
Add leveled logging (#1249)
Co-authored-by: Ibrahim Jarif <[email protected]>
1 parent 30eeec2 commit 4f6763c

File tree

2 files changed

+37
-6
lines changed

2 files changed

+37
-6
lines changed

logger.go

+25-5
Original file line numberDiff line numberDiff line change
@@ -62,24 +62,44 @@ func (opt *Options) Debugf(format string, v ...interface{}) {
6262
opt.Logger.Debugf(format, v...)
6363
}
6464

65+
type loggingLevel int
66+
67+
const (
68+
DEBUG loggingLevel = iota
69+
INFO
70+
WARNING
71+
ERROR
72+
)
73+
6574
type defaultLog struct {
6675
*log.Logger
76+
level loggingLevel
6777
}
6878

69-
var defaultLogger = &defaultLog{Logger: log.New(os.Stderr, "badger ", log.LstdFlags)}
79+
func defaultLogger(level loggingLevel) *defaultLog {
80+
return &defaultLog{Logger: log.New(os.Stderr, "badger ", log.LstdFlags), level: level}
81+
}
7082

7183
func (l *defaultLog) Errorf(f string, v ...interface{}) {
72-
l.Printf("ERROR: "+f, v...)
84+
if l.level <= ERROR {
85+
l.Printf("ERROR: "+f, v...)
86+
}
7387
}
7488

7589
func (l *defaultLog) Warningf(f string, v ...interface{}) {
76-
l.Printf("WARNING: "+f, v...)
90+
if l.level <= WARNING {
91+
l.Printf("WARNING: "+f, v...)
92+
}
7793
}
7894

7995
func (l *defaultLog) Infof(f string, v ...interface{}) {
80-
l.Printf("INFO: "+f, v...)
96+
if l.level <= INFO {
97+
l.Printf("INFO: "+f, v...)
98+
}
8199
}
82100

83101
func (l *defaultLog) Debugf(f string, v ...interface{}) {
84-
l.Printf("DEBUG: "+f, v...)
102+
if l.level <= DEBUG {
103+
l.Printf("DEBUG: "+f, v...)
104+
}
85105
}

options.go

+12-1
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ func DefaultOptions(path string) Options {
154154
ValueLogMaxEntries: 1000000,
155155
ValueThreshold: 32,
156156
Truncate: false,
157-
Logger: defaultLogger,
157+
Logger: defaultLogger(INFO),
158158
LogRotatesToFlush: 2,
159159
EventLogging: false,
160160
EncryptionKey: []byte{},
@@ -217,6 +217,17 @@ func (opt Options) WithValueDir(val string) Options {
217217
return opt
218218
}
219219

220+
// WithLoggingLevel returns a new Options value with logging level of the
221+
// default logger set to the given value.
222+
// LoggingLevel sets the level of logging. It should be one of DEBUG, INFO,
223+
// WARNING or ERROR levels.
224+
//
225+
// The default value of LoggingLevel is INFO.
226+
func (opt Options) WithLoggingLevel(val loggingLevel) Options {
227+
opt.Logger = defaultLogger(val)
228+
return opt
229+
}
230+
220231
// WithSyncWrites returns a new Options value with SyncWrites set to the given value.
221232
//
222233
// When SyncWrites is true all writes are synced to disk. Setting this to false would achieve better

0 commit comments

Comments
 (0)