forked from mirror/logrus
Make logrus.Level implement encoding.TextUnmarshaler
This commit is contained in:
parent
680f584d62
commit
5c1f2cd52c
12
logrus.go
12
logrus.go
|
@ -53,6 +53,18 @@ func ParseLevel(lvl string) (Level, error) {
|
||||||
return l, fmt.Errorf("not a valid logrus Level: %q", lvl)
|
return l, fmt.Errorf("not a valid logrus Level: %q", lvl)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// UnmarshalText implements encoding.TextUnmarshaler.
|
||||||
|
func (level *Level) UnmarshalText(text []byte) error {
|
||||||
|
l, err := ParseLevel(string(text))
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
*level = Level(l)
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// A constant exposing all logging levels
|
// A constant exposing all logging levels
|
||||||
var AllLevels = []Level{
|
var AllLevels = []Level{
|
||||||
PanicLevel,
|
PanicLevel,
|
||||||
|
|
|
@ -372,6 +372,19 @@ func TestParseLevel(t *testing.T) {
|
||||||
assert.Equal(t, "not a valid logrus Level: \"invalid\"", err.Error())
|
assert.Equal(t, "not a valid logrus Level: \"invalid\"", err.Error())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestUnmarshalText(t *testing.T) {
|
||||||
|
var u Level
|
||||||
|
for _, level := range AllLevels {
|
||||||
|
t.Run(level.String(), func(t *testing.T) {
|
||||||
|
assert.NoError(t, u.UnmarshalText([]byte(level.String())))
|
||||||
|
assert.Equal(t, level, u)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
t.Run("invalid", func(t *testing.T) {
|
||||||
|
assert.Error(t, u.UnmarshalText([]byte("invalid")))
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
func TestGetSetLevelRace(t *testing.T) {
|
func TestGetSetLevelRace(t *testing.T) {
|
||||||
wg := sync.WaitGroup{}
|
wg := sync.WaitGroup{}
|
||||||
for i := 0; i < 100; i++ {
|
for i := 0; i < 100; i++ {
|
||||||
|
|
Loading…
Reference in New Issue