github.com/naphatkrit/deis@v1.12.3/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  }