github.com/ralexstokes/docker@v1.6.2/daemon/logger/syslog/syslog.go (about) 1 package syslog 2 3 import ( 4 "fmt" 5 "log/syslog" 6 "os" 7 "path" 8 "sync" 9 10 "github.com/docker/docker/daemon/logger" 11 ) 12 13 type Syslog struct { 14 writer *syslog.Writer 15 tag string 16 mu sync.Mutex 17 } 18 19 func New(tag string) (logger.Logger, error) { 20 log, err := syslog.New(syslog.LOG_DAEMON, fmt.Sprintf("%s/%s", path.Base(os.Args[0]), tag)) 21 if err != nil { 22 return nil, err 23 } 24 return &Syslog{ 25 writer: log, 26 }, nil 27 } 28 29 func (s *Syslog) Log(msg *logger.Message) error { 30 if msg.Source == "stderr" { 31 return s.writer.Err(string(msg.Line)) 32 } 33 return s.writer.Info(string(msg.Line)) 34 } 35 36 func (s *Syslog) Close() error { 37 if s.writer != nil { 38 return s.writer.Close() 39 } 40 return nil 41 } 42 43 func (s *Syslog) Name() string { 44 return "Syslog" 45 }