watchtower/pkg/notifications/preview/data/logs.go

57 lines
1.1 KiB
Go
Raw Normal View History

2023-10-02 15:30:28 +02:00
package data
2023-10-02 11:37:30 +02:00
import (
"time"
)
2023-10-02 15:30:28 +02:00
type logEntry struct {
2023-10-02 11:37:30 +02:00
Message string
Data map[string]any
Time time.Time
Level LogLevel
}
2023-10-02 15:30:28 +02:00
// LogLevel is the analog of logrus.Level
2023-10-02 13:39:53 +02:00
type LogLevel string
2023-10-02 11:37:30 +02:00
const (
2023-10-02 13:39:53 +02:00
TraceLevel LogLevel = "trace"
DebugLevel LogLevel = "debug"
InfoLevel LogLevel = "info"
WarnLevel LogLevel = "warning"
ErrorLevel LogLevel = "error"
FatalLevel LogLevel = "fatal"
PanicLevel LogLevel = "panic"
2023-10-02 11:37:30 +02:00
)
2023-10-02 15:30:28 +02:00
// LevelsFromString parses a string of level characters and returns a slice of the corresponding log levels
2023-10-02 13:39:53 +02:00
func LevelsFromString(str string) []LogLevel {
levels := make([]LogLevel, 0, len(str))
for _, c := range str {
switch c {
case 'p':
levels = append(levels, PanicLevel)
case 'f':
levels = append(levels, FatalLevel)
case 'e':
levels = append(levels, ErrorLevel)
case 'w':
levels = append(levels, WarnLevel)
case 'i':
levels = append(levels, InfoLevel)
case 'd':
levels = append(levels, DebugLevel)
case 't':
levels = append(levels, TraceLevel)
default:
continue
}
2023-10-02 11:37:30 +02:00
}
2023-10-02 13:39:53 +02:00
return levels
}
2023-10-02 15:30:28 +02:00
// String returns the log level as a string
2023-10-02 13:39:53 +02:00
func (level LogLevel) String() string {
return string(level)
2023-10-02 11:37:30 +02:00
}