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