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  }