...
1
2
3
4 package zerolog
5
6 import (
7 "bytes"
8 "reflect"
9 "strings"
10 "testing"
11 )
12
13 type syslogEvent struct {
14 level string
15 msg string
16 }
17 type syslogTestWriter struct {
18 events []syslogEvent
19 }
20
21 func (w *syslogTestWriter) Write(p []byte) (int, error) {
22 return 0, nil
23 }
24 func (w *syslogTestWriter) Trace(m string) error {
25 w.events = append(w.events, syslogEvent{"Trace", m})
26 return nil
27 }
28 func (w *syslogTestWriter) Debug(m string) error {
29 w.events = append(w.events, syslogEvent{"Debug", m})
30 return nil
31 }
32 func (w *syslogTestWriter) Info(m string) error {
33 w.events = append(w.events, syslogEvent{"Info", m})
34 return nil
35 }
36 func (w *syslogTestWriter) Warning(m string) error {
37 w.events = append(w.events, syslogEvent{"Warning", m})
38 return nil
39 }
40 func (w *syslogTestWriter) Err(m string) error {
41 w.events = append(w.events, syslogEvent{"Err", m})
42 return nil
43 }
44 func (w *syslogTestWriter) Emerg(m string) error {
45 w.events = append(w.events, syslogEvent{"Emerg", m})
46 return nil
47 }
48 func (w *syslogTestWriter) Crit(m string) error {
49 w.events = append(w.events, syslogEvent{"Crit", m})
50 return nil
51 }
52
53 func TestSyslogWriter(t *testing.T) {
54 sw := &syslogTestWriter{}
55 log := New(SyslogLevelWriter(sw))
56 log.Trace().Msg("trace")
57 log.Debug().Msg("debug")
58 log.Info().Msg("info")
59 log.Warn().Msg("warn")
60 log.Error().Msg("error")
61 log.Log().Msg("nolevel")
62 want := []syslogEvent{
63 {"Debug", `{"level":"debug","message":"debug"}` + "\n"},
64 {"Info", `{"level":"info","message":"info"}` + "\n"},
65 {"Warning", `{"level":"warn","message":"warn"}` + "\n"},
66 {"Err", `{"level":"error","message":"error"}` + "\n"},
67 {"Info", `{"message":"nolevel"}` + "\n"},
68 }
69 if got := sw.events; !reflect.DeepEqual(got, want) {
70 t.Errorf("Invalid syslog message routing: want %v, got %v", want, got)
71 }
72 }
73
74 type testCEEwriter struct {
75 buf *bytes.Buffer
76 }
77
78
79 func (c testCEEwriter) Debug(m string) error { return nil }
80
81 func (c testCEEwriter) Info(m string) error {
82 _, err := c.buf.Write([]byte(m))
83 return err
84 }
85
86 func (c testCEEwriter) Warning(m string) error { return nil }
87
88 func (c testCEEwriter) Err(m string) error { return nil }
89
90 func (c testCEEwriter) Emerg(m string) error { return nil }
91
92 func (c testCEEwriter) Crit(m string) error { return nil }
93
94 func (c testCEEwriter) Write(b []byte) (int, error) {
95 return c.buf.Write(b)
96 }
97
98 func TestSyslogWriter_WithCEE(t *testing.T) {
99 var buf bytes.Buffer
100 sw := testCEEwriter{&buf}
101 log := New(SyslogCEEWriter(sw))
102 log.Info().Str("key", "value").Msg("message string")
103 got := string(buf.Bytes())
104 want := "@cee:{"
105 if !strings.HasPrefix(got, want) {
106 t.Errorf("Bad CEE message start: want %v, got %v", want, got)
107 }
108 }
109
View as plain text