github.com/jaegerpicker/docker@v0.7.7-0.20150325003727-22dba32b4dab/daemon/logger/syslog/syslog.go (about)

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