49 lines
935 B
Go
49 lines
935 B
Go
package logger
|
|
|
|
import (
|
|
"log"
|
|
"os"
|
|
"fmt"
|
|
)
|
|
|
|
type Logger interface {
|
|
Printf(format string, v ...any)
|
|
Fatalf(format string, v ...any)
|
|
}
|
|
|
|
type stdLogger struct {
|
|
l *log.Logger
|
|
}
|
|
|
|
func (s *stdLogger) Printf(format string, v ...any) { s.l.Printf(format, v...) }
|
|
func (s *stdLogger) Fatalf(format string, v ...any) { s.l.Fatalf(format, v...) }
|
|
|
|
var defaultLogger Logger = &stdLogger{
|
|
l: log.New(os.Stdout, "[app] ", log.LstdFlags|log.Lshortfile),
|
|
}
|
|
|
|
func L() Logger {
|
|
return defaultLogger
|
|
}
|
|
|
|
func SetLogger(l Logger) {
|
|
if l != nil {
|
|
defaultLogger = l
|
|
}
|
|
}
|
|
|
|
type prefLogger struct {
|
|
prefix string
|
|
}
|
|
|
|
func (p *prefLogger) Printf(format string, v ...any) {
|
|
defaultLogger.Printf("%s %s", p.prefix, fmt.Sprintf(format, v...))
|
|
}
|
|
func (p *prefLogger) Fatalf(format string, v ...any) {
|
|
defaultLogger.Fatalf("%s %s", p.prefix, fmt.Sprintf(format, v...))
|
|
}
|
|
|
|
func WithPrefix(prefix string) Logger {
|
|
return &prefLogger{prefix: prefix}
|
|
}
|