...
1
2
3
4 package zerolog
5
6 import (
7 "io"
8 )
9
10
11
12 const ceePrefix = "@cee:"
13
14
15 type SyslogWriter interface {
16 io.Writer
17 Debug(m string) error
18 Info(m string) error
19 Warning(m string) error
20 Err(m string) error
21 Emerg(m string) error
22 Crit(m string) error
23 }
24
25 type syslogWriter struct {
26 w SyslogWriter
27 prefix string
28 }
29
30
31
32 func SyslogLevelWriter(w SyslogWriter) LevelWriter {
33 return syslogWriter{w, ""}
34 }
35
36
37
38
39
40 func SyslogCEEWriter(w SyslogWriter) LevelWriter {
41 return syslogWriter{w, ceePrefix}
42 }
43
44 func (sw syslogWriter) Write(p []byte) (n int, err error) {
45 var pn int
46 if sw.prefix != "" {
47 pn, err = sw.w.Write([]byte(sw.prefix))
48 if err != nil {
49 return pn, err
50 }
51 }
52 n, err = sw.w.Write(p)
53 return pn + n, err
54 }
55
56
57 func (sw syslogWriter) WriteLevel(level Level, p []byte) (n int, err error) {
58 switch level {
59 case TraceLevel:
60 case DebugLevel:
61 err = sw.w.Debug(sw.prefix + string(p))
62 case InfoLevel:
63 err = sw.w.Info(sw.prefix + string(p))
64 case WarnLevel:
65 err = sw.w.Warning(sw.prefix + string(p))
66 case ErrorLevel:
67 err = sw.w.Err(sw.prefix + string(p))
68 case FatalLevel:
69 err = sw.w.Emerg(sw.prefix + string(p))
70 case PanicLevel:
71 err = sw.w.Crit(sw.prefix + string(p))
72 case NoLevel:
73 err = sw.w.Info(sw.prefix + string(p))
74 default:
75 panic("invalid level")
76 }
77
78 n = len(p)
79 return
80 }
81
View as plain text