github.com/wallyworld/juju@v0.0.0-20161013125918-6cf1bc9d917a/worker/logforwarder/sinks/syslog.go (about)

     1  // Copyright 2016 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package sinks
     5  
     6  import (
     7  	"github.com/juju/errors"
     8  
     9  	"github.com/juju/juju/logfwd"
    10  	"github.com/juju/juju/logfwd/syslog"
    11  	"github.com/juju/juju/worker/logforwarder"
    12  )
    13  
    14  // OpenSyslog returns a sink used to receive log messages to be forwarded.
    15  func OpenSyslog(cfg *syslog.RawConfig) (*logforwarder.LogSink, error) {
    16  	if !cfg.Enabled {
    17  		return nil, errors.New("log forwarding not enabled")
    18  	}
    19  	client, err := syslog.Open(*cfg)
    20  	if err != nil {
    21  		return nil, errors.Trace(err)
    22  	}
    23  	if client == nil {
    24  		// TODO(axw) we should be returning an error
    25  		// which we interpret up the stack.
    26  		return &logforwarder.LogSink{
    27  			SendCloser: emptySendCloser{},
    28  		}, nil
    29  	}
    30  	sink := &logforwarder.LogSink{
    31  		SendCloser: client,
    32  	}
    33  	return sink, nil
    34  }
    35  
    36  type emptySendCloser struct{}
    37  
    38  func (emptySendCloser) Send([]logfwd.Record) error {
    39  	return nil
    40  }
    41  
    42  func (emptySendCloser) Close() error {
    43  	return nil
    44  }