github.com/jogo/docker@v1.7.0-rc1/daemon/logger/syslog/syslog.go (about) 1 // +build linux 2 3 package syslog 4 5 import ( 6 "fmt" 7 "io" 8 "log/syslog" 9 "os" 10 "path" 11 12 "github.com/Sirupsen/logrus" 13 "github.com/docker/docker/daemon/logger" 14 ) 15 16 const name = "syslog" 17 18 type Syslog struct { 19 writer *syslog.Writer 20 } 21 22 func init() { 23 if err := logger.RegisterLogDriver(name, New); err != nil { 24 logrus.Fatal(err) 25 } 26 } 27 28 func New(ctx logger.Context) (logger.Logger, error) { 29 tag := ctx.ContainerID[:12] 30 log, err := syslog.New(syslog.LOG_DAEMON, fmt.Sprintf("%s/%s", path.Base(os.Args[0]), tag)) 31 if err != nil { 32 return nil, err 33 } 34 35 return &Syslog{ 36 writer: log, 37 }, nil 38 } 39 40 func (s *Syslog) Log(msg *logger.Message) error { 41 if msg.Source == "stderr" { 42 return s.writer.Err(string(msg.Line)) 43 } 44 return s.writer.Info(string(msg.Line)) 45 } 46 47 func (s *Syslog) Close() error { 48 return s.writer.Close() 49 } 50 51 func (s *Syslog) Name() string { 52 return name 53 } 54 55 func (s *Syslog) GetReader() (io.Reader, error) { 56 return nil, logger.ReadLogsNotSupported 57 }