package logger import ( "log" "os" ) // Logger represents a simple logger wrapper type Logger struct { logger *log.Logger level string } // New creates a new logger func New(level string, format string, file string) *Logger { // Determine output destination var output *os.File if file != "" { f, err := os.OpenFile(file, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666) if err != nil { log.Fatal(err) } output = f } else { output = os.Stdout } // Create the logger logger := log.New(output, "", log.LstdFlags|log.Lshortfile) return &Logger{ logger: logger, level: level, } } // Debug logs a debug message func (l *Logger) Debug(v ...interface{}) { if l.level == "debug" { l.logger.Print("DEBUG: ", v) } } // Info logs an info message func (l *Logger) Info(v ...interface{}) { if l.level == "debug" || l.level == "info" { l.logger.Print("INFO: ", v) } } // Warn logs a warning message func (l *Logger) Warn(v ...interface{}) { if l.level == "debug" || l.level == "info" || l.level == "warn" { l.logger.Print("WARN: ", v) } } // Error logs an error message func (l *Logger) Error(v ...interface{}) { l.logger.Print("ERROR: ", v) }