package logger import ( "log" "os" ) 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 } }