1 // +build !windows,!nacl,!plan9
10 "github.com/sirupsen/logrus"
13 // SyslogHook to send logs via syslog.
14 type SyslogHook struct {
20 // Creates a hook to be added to an instance of logger. This is called with
21 // `hook, err := NewSyslogHook("udp", "localhost:514", syslog.LOG_DEBUG, "")`
22 // `if err == nil { log.Hooks.Add(hook) }`
23 func NewSyslogHook(network, raddr string, priority syslog.Priority, tag string) (*SyslogHook, error) {
24 w, err := syslog.Dial(network, raddr, priority, tag)
25 return &SyslogHook{w, network, raddr}, err
28 func (hook *SyslogHook) Fire(entry *logrus.Entry) error {
29 line, err := entry.String()
31 fmt.Fprintf(os.Stderr, "Unable to read entry, %v", err)
36 case logrus.PanicLevel:
37 return hook.Writer.Crit(line)
38 case logrus.FatalLevel:
39 return hook.Writer.Crit(line)
40 case logrus.ErrorLevel:
41 return hook.Writer.Err(line)
42 case logrus.WarnLevel:
43 return hook.Writer.Warning(line)
44 case logrus.InfoLevel:
45 return hook.Writer.Info(line)
46 case logrus.DebugLevel:
47 return hook.Writer.Debug(line)
53 func (hook *SyslogHook) Levels() []logrus.Level {
54 return logrus.AllLevels