package logging import ( "context" "io" "log" ) type StandardLogger struct { logger *log.Logger } func NewStandardLogger(writer io.Writer) *StandardLogger { return &StandardLogger{ logger: log.New(writer, "", log.LstdFlags), } } func (l *StandardLogger) Info(ctx context.Context, msg string, fields ...interface{}) { l.log("INFO", msg, fields...) } func (l *StandardLogger) Error(ctx context.Context, msg string, fields ...interface{}) { l.log("ERROR", msg, fields...) } func (l *StandardLogger) Debug(ctx context.Context, msg string, fields ...interface{}) { l.log("DEBUG", msg, fields...) } func (l *StandardLogger) Warn(ctx context.Context, msg string, fields ...interface{}) { l.log("WARN", msg, fields...) } func (l *StandardLogger) log(level, msg string, fields ...interface{}) { if len(fields) > 0 { l.logger.Printf("[%s] %s %v", level, msg, fields) } else { l.logger.Printf("[%s] %s", level, msg) } }