Files
Patrick Asmus 4f17f7ff81 feat!: Migration auf Go-Binary
BREAKING CHANGE: Die alte Shell-Version muss vor der Installation der Go-Version deinstalliert werden.
2026-05-01 00:08:57 +02:00

83 lines
1.4 KiB
Go

package syslog
import (
"fmt"
"io"
"log"
"strings"
"sync"
)
type Level int
const (
Debug Level = iota
Info
Warn
Error
)
type Logger struct {
mu sync.Mutex
min Level
log *log.Logger
}
func New(w io.Writer, min string) *Logger {
return &Logger{
min: ParseLevel(min, Info),
log: log.New(w, "", log.LstdFlags),
}
}
func ParseLevel(s string, fallback Level) Level {
switch strings.ToUpper(strings.TrimSpace(s)) {
case "DEBUG":
return Debug
case "INFO", "":
return Info
case "WARN", "WARNING":
return Warn
case "ERROR", "ERR":
return Error
default:
return fallback
}
}
func LevelName(l Level) string {
switch l {
case Debug:
return "DEBUG"
case Info:
return "INFO"
case Warn:
return "WARN"
case Error:
return "ERROR"
default:
return "INFO"
}
}
func (l *Logger) Enabled(level Level) bool {
if l == nil {
return false
}
return level >= l.min
}
func (l *Logger) Logf(level Level, format string, args ...any) {
if !l.Enabled(level) {
return
}
l.mu.Lock()
defer l.mu.Unlock()
l.log.Printf("[%s] [ADGUARD-SHIELDD] %s", LevelName(level), fmt.Sprintf(format, args...))
}
func (l *Logger) Debugf(format string, args ...any) { l.Logf(Debug, format, args...) }
func (l *Logger) Infof(format string, args ...any) { l.Logf(Info, format, args...) }
func (l *Logger) Warnf(format string, args ...any) { l.Logf(Warn, format, args...) }
func (l *Logger) Errorf(format string, args ...any) { l.Logf(Error, format, args...) }