1
0
mirror of https://github.com/MetaCubeX/mihomo.git synced 2025-09-19 20:15:59 +08:00
Files
mihomo/log/level.go

58 lines
952 B
Go
Raw Normal View History

2018-11-21 13:47:46 +08:00
package log
import (
"errors"
"strings"
2018-11-21 13:47:46 +08:00
)
2021-10-10 23:44:09 +08:00
// LogLevelMapping is a mapping for LogLevel enum
var LogLevelMapping = map[string]LogLevel{
ERROR.String(): ERROR,
WARNING.String(): WARNING,
INFO.String(): INFO,
DEBUG.String(): DEBUG,
SILENT.String(): SILENT,
}
2018-11-21 13:47:46 +08:00
const (
DEBUG LogLevel = iota
INFO
WARNING
ERROR
2018-12-03 23:41:40 +08:00
SILENT
2018-11-21 13:47:46 +08:00
)
type LogLevel int
// UnmarshalText unserialize LogLevel
func (l *LogLevel) UnmarshalText(data []byte) error {
level, exist := LogLevelMapping[strings.ToLower(string(data))]
if !exist {
2025-05-15 18:07:55 +08:00
return errors.New("invalid log-level")
}
*l = level
return nil
2018-11-21 13:47:46 +08:00
}
// MarshalText serialize LogLevel
func (l LogLevel) MarshalText() ([]byte, error) {
return []byte(l.String()), nil
}
2018-11-21 13:47:46 +08:00
func (l LogLevel) String() string {
switch l {
case INFO:
return "info"
case WARNING:
return "warning"
case ERROR:
return "error"
case DEBUG:
return "debug"
2018-12-03 23:41:40 +08:00
case SILENT:
return "silent"
2018-11-21 13:47:46 +08:00
default:
2018-12-05 21:13:29 +08:00
return "unknown"
2018-11-21 13:47:46 +08:00
}
}