blob: 82b470eb4fb7c6564d0a4b8e433d8c90f8a49c77 [file] [log] [blame]
khenaidooac637102019-01-14 15:44:34 -05001// +build !windows
2// +build !binary_log
3
4package zerolog
5
6import (
7 "io"
8)
9
10// SyslogWriter is an interface matching a syslog.Writer struct.
11type SyslogWriter interface {
12 io.Writer
13 Debug(m string) error
14 Info(m string) error
15 Warning(m string) error
16 Err(m string) error
17 Emerg(m string) error
18 Crit(m string) error
19}
20
21type syslogWriter struct {
22 w SyslogWriter
23}
24
25// SyslogLevelWriter wraps a SyslogWriter and call the right syslog level
26// method matching the zerolog level.
27func SyslogLevelWriter(w SyslogWriter) LevelWriter {
28 return syslogWriter{w}
29}
30
31func (sw syslogWriter) Write(p []byte) (n int, err error) {
32 return sw.w.Write(p)
33}
34
35// WriteLevel implements LevelWriter interface.
36func (sw syslogWriter) WriteLevel(level Level, p []byte) (n int, err error) {
37 switch level {
38 case DebugLevel:
39 err = sw.w.Debug(string(p))
40 case InfoLevel:
41 err = sw.w.Info(string(p))
42 case WarnLevel:
43 err = sw.w.Warning(string(p))
44 case ErrorLevel:
45 err = sw.w.Err(string(p))
46 case FatalLevel:
47 err = sw.w.Emerg(string(p))
48 case PanicLevel:
49 err = sw.w.Crit(string(p))
50 case NoLevel:
51 err = sw.w.Info(string(p))
52 default:
53 panic("invalid level")
54 }
55 n = len(p)
56 return
57}