You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
1.1 KiB
Go
57 lines
1.1 KiB
Go
package data
|
|
|
|
import (
|
|
"time"
|
|
)
|
|
|
|
type logEntry struct {
|
|
Message string
|
|
Data map[string]any
|
|
Time time.Time
|
|
Level LogLevel
|
|
}
|
|
|
|
// LogLevel is the analog of logrus.Level
|
|
type LogLevel string
|
|
|
|
const (
|
|
TraceLevel LogLevel = "trace"
|
|
DebugLevel LogLevel = "debug"
|
|
InfoLevel LogLevel = "info"
|
|
WarnLevel LogLevel = "warning"
|
|
ErrorLevel LogLevel = "error"
|
|
FatalLevel LogLevel = "fatal"
|
|
PanicLevel LogLevel = "panic"
|
|
)
|
|
|
|
// LevelsFromString parses a string of level characters and returns a slice of the corresponding log levels
|
|
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
|
|
}
|
|
}
|
|
return levels
|
|
}
|
|
|
|
// String returns the log level as a string
|
|
func (level LogLevel) String() string {
|
|
return string(level)
|
|
}
|