diff options
author | Daniel J Walsh <dwalsh@redhat.com> | 2018-07-12 14:34:37 -0400 |
---|---|---|
committer | Atomic Bot <atomic-devel@projectatomic.io> | 2018-07-12 21:19:05 +0000 |
commit | e615b7d67124c548a3c7b422348821204ce32775 (patch) | |
tree | 6290966b07459aba3aee3b77fe8ed8ca6d72ffff /vendor/github.com/sirupsen/logrus/hooks/syslog/syslog.go | |
parent | 4f188aa191f1d28be19af64317bd8512f5c0cac0 (diff) | |
download | podman-e615b7d67124c548a3c7b422348821204ce32775.tar.gz podman-e615b7d67124c548a3c7b422348821204ce32775.tar.bz2 podman-e615b7d67124c548a3c7b422348821204ce32775.zip |
Log all output of logrus to syslog as well as stdout/stderr
Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
Closes: #1084
Approved by: baude
Diffstat (limited to 'vendor/github.com/sirupsen/logrus/hooks/syslog/syslog.go')
-rw-r--r-- | vendor/github.com/sirupsen/logrus/hooks/syslog/syslog.go | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/vendor/github.com/sirupsen/logrus/hooks/syslog/syslog.go b/vendor/github.com/sirupsen/logrus/hooks/syslog/syslog.go new file mode 100644 index 000000000..204f0016d --- /dev/null +++ b/vendor/github.com/sirupsen/logrus/hooks/syslog/syslog.go @@ -0,0 +1,54 @@ +// +build !windows,!nacl,!plan9 + +package logrus_syslog + +import ( + "fmt" + "github.com/sirupsen/logrus" + "log/syslog" + "os" +) + +// SyslogHook to send logs via syslog. +type SyslogHook struct { + Writer *syslog.Writer + SyslogNetwork string + SyslogRaddr string +} + +// Creates a hook to be added to an instance of logger. This is called with +// `hook, err := NewSyslogHook("udp", "localhost:514", syslog.LOG_DEBUG, "")` +// `if err == nil { log.Hooks.Add(hook) }` +func NewSyslogHook(network, raddr string, priority syslog.Priority, tag string) (*SyslogHook, error) { + w, err := syslog.Dial(network, raddr, priority, tag) + return &SyslogHook{w, network, raddr}, err +} + +func (hook *SyslogHook) Fire(entry *logrus.Entry) error { + line, err := entry.String() + if err != nil { + fmt.Fprintf(os.Stderr, "Unable to read entry, %v", err) + return err + } + + switch entry.Level { + case logrus.PanicLevel: + return hook.Writer.Crit(line) + case logrus.FatalLevel: + return hook.Writer.Crit(line) + case logrus.ErrorLevel: + return hook.Writer.Err(line) + case logrus.WarnLevel: + return hook.Writer.Warning(line) + case logrus.InfoLevel: + return hook.Writer.Info(line) + case logrus.DebugLevel: + return hook.Writer.Debug(line) + default: + return nil + } +} + +func (hook *SyslogHook) Levels() []logrus.Level { + return logrus.AllLevels +} |