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  }