1// +build !binary_log 2// +build !windows 3 4package zerolog 5 6import ( 7 "reflect" 8 "testing" 9) 10 11type syslogEvent struct { 12 level string 13 msg string 14} 15type syslogTestWriter struct { 16 events []syslogEvent 17} 18 19func (w *syslogTestWriter) Write(p []byte) (int, error) { 20 return 0, nil 21} 22func (w *syslogTestWriter) Trace(m string) error { 23 w.events = append(w.events, syslogEvent{"Trace", m}) 24 return nil 25} 26func (w *syslogTestWriter) Debug(m string) error { 27 w.events = append(w.events, syslogEvent{"Debug", m}) 28 return nil 29} 30func (w *syslogTestWriter) Info(m string) error { 31 w.events = append(w.events, syslogEvent{"Info", m}) 32 return nil 33} 34func (w *syslogTestWriter) Warning(m string) error { 35 w.events = append(w.events, syslogEvent{"Warning", m}) 36 return nil 37} 38func (w *syslogTestWriter) Err(m string) error { 39 w.events = append(w.events, syslogEvent{"Err", m}) 40 return nil 41} 42func (w *syslogTestWriter) Emerg(m string) error { 43 w.events = append(w.events, syslogEvent{"Emerg", m}) 44 return nil 45} 46func (w *syslogTestWriter) Crit(m string) error { 47 w.events = append(w.events, syslogEvent{"Crit", m}) 48 return nil 49} 50 51func TestSyslogWriter(t *testing.T) { 52 sw := &syslogTestWriter{} 53 log := New(SyslogLevelWriter(sw)) 54 log.Trace().Msg("trace") 55 log.Debug().Msg("debug") 56 log.Info().Msg("info") 57 log.Warn().Msg("warn") 58 log.Error().Msg("error") 59 log.Log().Msg("nolevel") 60 want := []syslogEvent{ 61 {"Debug", `{"level":"debug","message":"debug"}` + "\n"}, 62 {"Info", `{"level":"info","message":"info"}` + "\n"}, 63 {"Warning", `{"level":"warn","message":"warn"}` + "\n"}, 64 {"Err", `{"level":"error","message":"error"}` + "\n"}, 65 {"Info", `{"message":"nolevel"}` + "\n"}, 66 } 67 if got := sw.events; !reflect.DeepEqual(got, want) { 68 t.Errorf("Invalid syslog message routing: want %v, got %v", want, got) 69 } 70} 71