diff --git a/main.go b/main.go index bf3f199..160ea17 100644 --- a/main.go +++ b/main.go @@ -20,13 +20,27 @@ func syslogdHandler(channel syslog.LogPartsChannel) { } } +func httpHandler(w http.ResponseWriter, r *http.Request) { + circbuf.Do(func(x interface{}) { + if x == nil { + return + } + logmsg := x.(format.LogParts) + if logmsg["message"] == nil { + return + } + c := logmsg["message"].(string) + w.Write([]byte(c)) + w.Write([]byte("\n")) + }) +} func main() { syslogSocketPath := flag.String("syslogd-socket", "", "The socket to listen to syslog addresses") // dumpSocketPath := flag.String("dump-socket", "/run/buffer.sock", "The socket that user will connect to in order to receive logs") bufsize := flag.Int("buffer-size", 1000, "Number of messages to keep") flag.Parse() - channel := make(syslog.LogPartsChannel) + channel := make(chan format.LogParts) handler := syslog.NewChannelHandler(channel) server := syslog.NewServer() @@ -34,28 +48,14 @@ func main() { server.SetHandler(handler) if *syslogSocketPath != "" { server.ListenUnixgram(*syslogSocketPath) + } else { + server.ListenUDP("127.0.0.1:9514") } - server.ListenUDP("127.0.0.1:9514") circbuf = ring.New(*bufsize) server.Boot() - go syslogdHandler(channel) - http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { - circbuf.Do(func(x interface{}) { - if x == nil { - return - } - logmsg := x.(format.LogParts) - if logmsg["message"] == nil { - return - } - c := logmsg["message"].(string) - w.Write([]byte(c)) - w.Write([]byte("\n")) - }) - }) - + http.HandleFunc("/", httpHandler) http.ListenAndServe(":9080", nil) server.Wait()