github.com/crowdsecurity/crowdsec@v1.6.1/cmd/crowdsec/event_log_hook_windows.go (about) 1 package main 2 3 import ( 4 log "github.com/sirupsen/logrus" 5 "golang.org/x/sys/windows/svc/eventlog" 6 ) 7 8 type EventLogHook struct { 9 LogLevels []log.Level 10 evtlog *eventlog.Log 11 } 12 13 func (e *EventLogHook) Fire(entry *log.Entry) error { 14 line, err := entry.String() 15 if err != nil { 16 return err 17 } 18 switch entry.Level { 19 case log.PanicLevel: 20 return e.evtlog.Error(300, line) 21 case log.FatalLevel: 22 return e.evtlog.Error(301, line) 23 case log.ErrorLevel: 24 return e.evtlog.Error(302, line) 25 case log.WarnLevel: 26 return e.evtlog.Warning(303, line) 27 case log.InfoLevel: 28 return e.evtlog.Info(304, line) 29 case log.DebugLevel: 30 return e.evtlog.Info(305, line) 31 case log.TraceLevel: 32 return e.evtlog.Info(306, line) 33 } 34 return nil 35 } 36 37 func (e *EventLogHook) Levels() []log.Level { 38 return e.LogLevels 39 }