github.com/maier/nomad@v0.4.1-0.20161110003312-a9e3d0b8549d/client/driver/executor/executor_unix.go (about)

     1  // +build darwin dragonfly freebsd linux netbsd openbsd solaris windows
     2  
     3  package executor
     4  
     5  import (
     6  	"fmt"
     7  	"io"
     8  
     9  	syslog "github.com/RackSec/srslog"
    10  
    11  	"github.com/hashicorp/nomad/client/driver/logging"
    12  )
    13  
    14  func (e *UniversalExecutor) LaunchSyslogServer() (*SyslogServerState, error) {
    15  	// Ensure the context has been set first
    16  	if e.ctx == nil {
    17  		return nil, fmt.Errorf("SetContext must be called before launching the Syslog Server")
    18  	}
    19  
    20  	// configuring the task dir
    21  	if err := e.configureTaskDir(); err != nil {
    22  		return nil, err
    23  	}
    24  
    25  	e.syslogChan = make(chan *logging.SyslogMessage, 2048)
    26  	l, err := e.getListener(e.ctx.PortLowerBound, e.ctx.PortUpperBound)
    27  	if err != nil {
    28  		return nil, err
    29  	}
    30  	e.logger.Printf("[DEBUG] sylog-server: launching syslog server on addr: %v", l.Addr().String())
    31  	if err := e.configureLoggers(); err != nil {
    32  		return nil, err
    33  	}
    34  
    35  	e.syslogServer = logging.NewSyslogServer(l, e.syslogChan, e.logger)
    36  	go e.syslogServer.Start()
    37  	go e.collectLogs(e.lre, e.lro)
    38  	syslogAddr := fmt.Sprintf("%s://%s", l.Addr().Network(), l.Addr().String())
    39  	return &SyslogServerState{Addr: syslogAddr}, nil
    40  }
    41  
    42  func (e *UniversalExecutor) collectLogs(we io.Writer, wo io.Writer) {
    43  	for logParts := range e.syslogChan {
    44  		// If the severity of the log line is err then we write to stderr
    45  		// otherwise all messages go to stdout
    46  		if logParts.Severity == syslog.LOG_ERR {
    47  			e.lre.Write(logParts.Message)
    48  			e.lre.Write([]byte{'\n'})
    49  		} else {
    50  			e.lro.Write(logParts.Message)
    51  			e.lro.Write([]byte{'\n'})
    52  		}
    53  	}
    54  }