go.dedis.ch/onet/v4@v4.0.0-pre1/log/syslog.go (about)

     1  // +build freebsd linux darwin
     2  
     3  package log
     4  
     5  import (
     6  	"log/syslog"
     7  
     8  	"golang.org/x/xerrors"
     9  )
    10  
    11  type syslogLogger struct {
    12  	lInfo  *LoggerInfo
    13  	writer *syslog.Writer
    14  }
    15  
    16  func (sl *syslogLogger) Log(level int, msg string) {
    17  	_, err := sl.writer.Write([]byte(msg))
    18  	if err != nil {
    19  		panic(err)
    20  	}
    21  }
    22  
    23  func (sl *syslogLogger) Close() {
    24  	sl.writer.Close()
    25  }
    26  
    27  func (sl *syslogLogger) GetLoggerInfo() *LoggerInfo {
    28  	return sl.lInfo
    29  }
    30  
    31  // NewSyslogLogger creates a logger that writes into syslog with
    32  // the given priority and tag, and is using the given LoggerInfo (without the
    33  // Logger).
    34  // It returns the logger.
    35  func NewSyslogLogger(lInfo *LoggerInfo, priority syslog.Priority, tag string) (Logger, error) {
    36  	writer, err := syslog.New(priority, tag)
    37  	if err != nil {
    38  		return nil, xerrors.Errorf("system log: %v", err)
    39  	}
    40  	return &syslogLogger{
    41  		lInfo:  lInfo,
    42  		writer: writer,
    43  	}, nil
    44  }