photoprism/pkg/sev/levels.go
Michael Mayer 3c4cc40882 Security: Refactor log levels and events #98
Signed-off-by: Michael Mayer <michael@photoprism.app>
2022-10-10 16:34:07 +02:00

80 lines
1.1 KiB
Go

package sev
import (
"fmt"
)
const (
Emergency Level = iota
Alert
Critical
Error
Warning
Notice
Info
Debug
)
var Levels = []Level{
Emergency,
Alert,
Critical,
Error,
Warning,
Notice,
Info,
Debug,
}
// UnmarshalText implements encoding.TextUnmarshaler.
func (level *Level) UnmarshalText(text []byte) error {
l, err := Parse(string(text))
if err != nil {
return err
}
*level = l
return nil
}
func (level Level) MarshalText() ([]byte, error) {
switch level {
case Debug:
return []byte("debug"), nil
case Info:
return []byte("info"), nil
case Notice:
return []byte("notice"), nil
case Warning:
return []byte("warning"), nil
case Error:
return []byte("error"), nil
case Critical:
return []byte("critical"), nil
case Alert:
return []byte("alert"), nil
case Emergency:
return []byte("emergency"), nil
}
return nil, fmt.Errorf("not a valid severity level %d", level)
}
func (level Level) Status() string {
switch level {
case Warning:
return "warning"
case Error:
return "error"
case Critical:
return "critical"
case Alert:
return "alert"
case Emergency:
return "emergency"
default:
return "OK"
}
}