@@ 1,9 1,12 @@
package log
import (
+ "errors"
+ "fmt"
"io"
"log"
"os"
+ "strings"
)
type Level int
@@ 15,6 18,8 @@ const (
Debug
)
+var ErrInvalidLevel = errors.New("cannot parse log-level from string")
+
type Logger struct {
*log.Logger
level Level
@@ 32,6 37,23 @@ func (l *Logger) SetLevel(level Level) {
l.level = level
}
+func (l *Logger) ParseLevel(level string) error {
+ switch strings.ToLower(level) {
+ case "error":
+ l.level = Error
+ case "warning":
+ l.level = Warning
+ case "info":
+ l.level = Info
+ case "debug":
+ l.level = Debug
+ default:
+ return fmt.Errorf("%w: %s", ErrInvalidLevel, level)
+ }
+
+ return nil
+}
+
func (l *Logger) Fatalf(format string, v ...interface{}) {
format = "FATAL: " + format
l.Logger.Fatalf(format, v...)