// +build !windows // +build !binary_log package zerolog import ( "io" ) // SyslogWriter is an interface matching a syslog.Writer struct. type SyslogWriter interface { io.Writer Debug(m string) error Info(m string) error Warning(m string) error Err(m string) error Emerg(m string) error Crit(m string) error } type syslogWriter struct { w SyslogWriter } // SyslogLevelWriter wraps a SyslogWriter and call the right syslog level // method matching the zerolog level. func SyslogLevelWriter(w SyslogWriter) LevelWriter { return syslogWriter{w} } func (sw syslogWriter) Write(p []byte) (n int, err error) { return sw.w.Write(p) } // WriteLevel implements LevelWriter interface. func (sw syslogWriter) WriteLevel(level Level, p []byte) (n int, err error) { switch level { case DebugLevel: err = sw.w.Debug(string(p)) case InfoLevel: err = sw.w.Info(string(p)) case WarnLevel: err = sw.w.Warning(string(p)) case ErrorLevel: err = sw.w.Err(string(p)) case FatalLevel: err = sw.w.Emerg(string(p)) case PanicLevel: err = sw.w.Crit(string(p)) case NoLevel: err = sw.w.Info(string(p)) default: panic("invalid level") } n = len(p) return }