Skip to content

Commit 8df1096

Browse files
committed
Add LevelFromString() helper
1 parent 8e6efea commit 8df1096

File tree

2 files changed

+42
-5
lines changed

2 files changed

+42
-5
lines changed

README.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,3 +49,22 @@ k := picolo.NewFrom(l, "[more-prefix]")
4949
k.Errorf("Error message: %v", err)
5050
// 2017-12-21 23:24:25.267 ERROR [some-prefix] [more-prefix] Error message: No such file or directory
5151
```
52+
53+
# Helpers
54+
55+
Use `picolo.LevelFromString` to parse a string into a log level. This can be used like:
56+
57+
```go
58+
// ...
59+
l := flag.String("logLevel", "debug", "Log level")
60+
flag.Parse()
61+
62+
lvl, err := picolo.LevelFromString(*l)
63+
if err != nil {
64+
// Unknown log level
65+
}
66+
67+
logger := picolo.New(picolo.WithLevel(lvl))
68+
logger.Infof("One two three")
69+
// ...
70+
```

log.go

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,17 +13,19 @@ type Level int
1313

1414
const (
1515
// Log levels
16-
LevelDebug Level = iota // Debug level
17-
LevelInfo // Info level
18-
LevelWarning // Warning level
19-
LevelError // Error level
16+
LevelDebug Level = iota + 1 // Debug level
17+
LevelInfo // Info level
18+
LevelWarning // Warning level
19+
LevelError // Error level
2020
)
2121

2222
const DefaultTimeFormat = "2006-01-02 15:04:05.000"
2323

24+
var ErrUnknownLevel = fmt.Errorf("Unknown log level")
25+
2426
// Logger is our logger struct
2527
type Logger struct {
26-
mu sync.Mutex // used to synchronize output as well
28+
mu sync.Mutex // used to synchronize output as well
2729
opts *options
2830
}
2931

@@ -167,3 +169,19 @@ func (l Level) String() string {
167169
return "UNKNOWN"
168170
}
169171
}
172+
173+
// LevelFromString returns the log level from string representation
174+
func LevelFromString(s string) (Level, error) {
175+
switch s {
176+
case "debug":
177+
return LevelDebug, nil
178+
case "info":
179+
return LevelInfo, nil
180+
case "warning":
181+
return LevelWarning, nil
182+
case "error":
183+
return LevelError, nil
184+
default:
185+
return 0, ErrUnknownLevel
186+
}
187+
}

0 commit comments

Comments
 (0)