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  }