You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
68 lines
1.7 KiB
68 lines
1.7 KiB
package database |
|
|
|
import ( |
|
"fmt" |
|
"runtime" |
|
"strings" |
|
|
|
"go.uber.org/atomic" |
|
"lol.mleku.dev" |
|
"lol.mleku.dev/log" |
|
) |
|
|
|
// NewLogger creates a new badger logger. |
|
func NewLogger(logLevel int, label string) (l *logger) { |
|
l = &logger{Label: label} |
|
l.Level.Store(int32(logLevel)) |
|
return |
|
} |
|
|
|
type logger struct { |
|
Level atomic.Int32 |
|
Label string |
|
} |
|
|
|
// SetLogLevel atomically adjusts the log level to the given log level code. |
|
func (l *logger) SetLogLevel(level int) { |
|
l.Level.Store(int32(level)) |
|
} |
|
|
|
// Errorf is a log printer for this level of message. |
|
func (l *logger) Errorf(s string, i ...interface{}) { |
|
if l.Level.Load() >= lol.Error { |
|
s = l.Label + ": " + s |
|
txt := fmt.Sprintf(s, i...) |
|
_, file, line, _ := runtime.Caller(2) |
|
log.E.F("%s\n%s:%d", strings.TrimSpace(txt), file, line) |
|
} |
|
} |
|
|
|
// Warningf is a log printer for this level of message. |
|
func (l *logger) Warningf(s string, i ...interface{}) { |
|
if l.Level.Load() >= lol.Warn { |
|
s = l.Label + ": " + s |
|
txt := fmt.Sprintf(s, i...) |
|
_, file, line, _ := runtime.Caller(2) |
|
log.W.F("%s\n%s:%d", strings.TrimSpace(txt), file, line) |
|
} |
|
} |
|
|
|
// Infof is a log printer for this level of message. |
|
func (l *logger) Infof(s string, i ...interface{}) { |
|
if l.Level.Load() >= lol.Info { |
|
s = l.Label + ": " + s |
|
txt := fmt.Sprintf(s, i...) |
|
_, file, line, _ := runtime.Caller(2) |
|
log.I.F("%s\n%s:%d", strings.TrimSpace(txt), file, line) |
|
} |
|
} |
|
|
|
// Debugf is a log printer for this level of message. |
|
func (l *logger) Debugf(s string, i ...interface{}) { |
|
if l.Level.Load() >= lol.Debug { |
|
s = l.Label + ": " + s |
|
txt := fmt.Sprintf(s, i...) |
|
_, file, line, _ := runtime.Caller(2) |
|
log.D.F("%s\n%s:%d", strings.TrimSpace(txt), file, line) |
|
} |
|
}
|
|
|