github.com/misfo/deis@v1.0.1-0.20141111224634-e0eee0392b8a/logspout/utils/syslog-listener.go (about) 1 package main 2 3 import ( 4 "flag" 5 "fmt" 6 "os" 7 "os/signal" 8 "syscall" 9 10 "github.com/ziutek/syslog" 11 ) 12 13 type handler struct { 14 *syslog.BaseHandler 15 } 16 17 func newHandler() *handler { 18 h := handler{syslog.NewBaseHandler(5, func(m *syslog.Message) bool { return true }, false)} 19 go h.mainLoop() 20 return &h 21 } 22 23 func (h *handler) mainLoop() { 24 for { 25 m := h.Get() 26 if m == nil { 27 break 28 } 29 fmt.Println(m) 30 } 31 h.End() 32 } 33 34 func main() { 35 flag.Parse() 36 s := syslog.NewServer() 37 s.AddHandler(newHandler()) 38 s.Listen(flag.Arg(0)) 39 40 // Wait for terminating signal 41 sc := make(chan os.Signal, 2) 42 signal.Notify(sc, syscall.SIGTERM, syscall.SIGINT) 43 <-sc 44 45 fmt.Println("Shutdown the server...") 46 s.Shutdown() 47 }