mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
re-vendor syslog log driver
Signed-off-by: Brian Goff <cpuguy83@gmail.com>
This commit is contained in:
parent
fb7e9a908b
commit
00caf03132
3 changed files with 49 additions and 31 deletions
|
@ -19,7 +19,7 @@ golang.org/x/sys 8f0908ab3b2457e2e15403d3697c9ef5cb4b57a9
|
||||||
github.com/docker/go-units 8a7beacffa3009a9ac66bad506b18ffdd110cf97
|
github.com/docker/go-units 8a7beacffa3009a9ac66bad506b18ffdd110cf97
|
||||||
github.com/docker/go-connections f512407a188ecb16f31a33dbc9c4e4814afc1b03
|
github.com/docker/go-connections f512407a188ecb16f31a33dbc9c4e4814afc1b03
|
||||||
|
|
||||||
github.com/RackSec/srslog 365bf33cd9acc21ae1c355209865f17228ca534e
|
github.com/RackSec/srslog 456df3a81436d29ba874f3590eeeee25d666f8a5
|
||||||
github.com/imdario/mergo 0.2.1
|
github.com/imdario/mergo 0.2.1
|
||||||
|
|
||||||
#get libnetwork packages
|
#get libnetwork packages
|
||||||
|
|
5
vendor/github.com/RackSec/srslog/srslog.go
generated
vendored
5
vendor/github.com/RackSec/srslog/srslog.go
generated
vendored
|
@ -77,10 +77,7 @@ func DialWithTLSConfig(network, raddr string, priority Priority, tag string, tls
|
||||||
tlsConfig: tlsConfig,
|
tlsConfig: tlsConfig,
|
||||||
}
|
}
|
||||||
|
|
||||||
w.Lock()
|
_, err := w.connect()
|
||||||
defer w.Unlock()
|
|
||||||
|
|
||||||
err := w.connect()
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
77
vendor/github.com/RackSec/srslog/writer.go
generated
vendored
77
vendor/github.com/RackSec/srslog/writer.go
generated
vendored
|
@ -8,8 +8,6 @@ import (
|
||||||
|
|
||||||
// A Writer is a connection to a syslog server.
|
// A Writer is a connection to a syslog server.
|
||||||
type Writer struct {
|
type Writer struct {
|
||||||
sync.Mutex // guards conn
|
|
||||||
|
|
||||||
priority Priority
|
priority Priority
|
||||||
tag string
|
tag string
|
||||||
hostname string
|
hostname string
|
||||||
|
@ -19,28 +17,48 @@ type Writer struct {
|
||||||
framer Framer
|
framer Framer
|
||||||
formatter Formatter
|
formatter Formatter
|
||||||
|
|
||||||
|
mu sync.RWMutex // guards conn
|
||||||
conn serverConn
|
conn serverConn
|
||||||
}
|
}
|
||||||
|
|
||||||
// connect makes a connection to the syslog server.
|
// getConn provides access to the internal conn, protected by a mutex. The
|
||||||
// It must be called with w.mu held.
|
// conn is threadsafe, so it can be used while unlocked, but we want to avoid
|
||||||
func (w *Writer) connect() (err error) {
|
// race conditions on grabbing a reference to it.
|
||||||
if w.conn != nil {
|
func (w *Writer) getConn() serverConn {
|
||||||
// ignore err from close, it makes sense to continue anyway
|
w.mu.RLock()
|
||||||
w.conn.close()
|
conn := w.conn
|
||||||
w.conn = nil
|
w.mu.RUnlock()
|
||||||
|
return conn
|
||||||
|
}
|
||||||
|
|
||||||
|
// setConn updates the internal conn, protected by a mutex.
|
||||||
|
func (w *Writer) setConn(c serverConn) {
|
||||||
|
w.mu.Lock()
|
||||||
|
w.conn = c
|
||||||
|
w.mu.Unlock()
|
||||||
|
}
|
||||||
|
|
||||||
|
// connect makes a connection to the syslog server.
|
||||||
|
func (w *Writer) connect() (serverConn, error) {
|
||||||
|
conn := w.getConn()
|
||||||
|
if conn != nil {
|
||||||
|
// ignore err from close, it makes sense to continue anyway
|
||||||
|
conn.close()
|
||||||
|
w.setConn(nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
var conn serverConn
|
|
||||||
var hostname string
|
var hostname string
|
||||||
|
var err error
|
||||||
dialer := w.getDialer()
|
dialer := w.getDialer()
|
||||||
conn, hostname, err = dialer.Call()
|
conn, hostname, err = dialer.Call()
|
||||||
if err == nil {
|
if err == nil {
|
||||||
w.conn = conn
|
w.setConn(conn)
|
||||||
w.hostname = hostname
|
w.hostname = hostname
|
||||||
}
|
|
||||||
|
|
||||||
return
|
return conn, nil
|
||||||
|
} else {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetFormatter changes the formatter function for subsequent messages.
|
// SetFormatter changes the formatter function for subsequent messages.
|
||||||
|
@ -59,14 +77,17 @@ func (w *Writer) Write(b []byte) (int, error) {
|
||||||
return w.writeAndRetry(w.priority, string(b))
|
return w.writeAndRetry(w.priority, string(b))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// WriteWithPriority sends a log message with a custom priority
|
||||||
|
func (w *Writer) WriteWithPriority(p Priority, b []byte) (int, error) {
|
||||||
|
return w.writeAndRetry(p, string(b))
|
||||||
|
}
|
||||||
|
|
||||||
// Close closes a connection to the syslog daemon.
|
// Close closes a connection to the syslog daemon.
|
||||||
func (w *Writer) Close() error {
|
func (w *Writer) Close() error {
|
||||||
w.Lock()
|
conn := w.getConn()
|
||||||
defer w.Unlock()
|
if conn != nil {
|
||||||
|
err := conn.close()
|
||||||
if w.conn != nil {
|
w.setConn(nil)
|
||||||
err := w.conn.close()
|
|
||||||
w.conn = nil
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
|
@ -131,29 +152,29 @@ func (w *Writer) Debug(m string) (err error) {
|
||||||
func (w *Writer) writeAndRetry(p Priority, s string) (int, error) {
|
func (w *Writer) writeAndRetry(p Priority, s string) (int, error) {
|
||||||
pr := (w.priority & facilityMask) | (p & severityMask)
|
pr := (w.priority & facilityMask) | (p & severityMask)
|
||||||
|
|
||||||
w.Lock()
|
conn := w.getConn()
|
||||||
defer w.Unlock()
|
if conn != nil {
|
||||||
|
if n, err := w.write(conn, pr, s); err == nil {
|
||||||
if w.conn != nil {
|
|
||||||
if n, err := w.write(pr, s); err == nil {
|
|
||||||
return n, err
|
return n, err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if err := w.connect(); err != nil {
|
|
||||||
|
var err error
|
||||||
|
if conn, err = w.connect(); err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
return w.write(pr, s)
|
return w.write(conn, pr, s)
|
||||||
}
|
}
|
||||||
|
|
||||||
// write generates and writes a syslog formatted string. It formats the
|
// write generates and writes a syslog formatted string. It formats the
|
||||||
// message based on the current Formatter and Framer.
|
// message based on the current Formatter and Framer.
|
||||||
func (w *Writer) write(p Priority, msg string) (int, error) {
|
func (w *Writer) write(conn serverConn, p Priority, msg string) (int, error) {
|
||||||
// ensure it ends in a \n
|
// ensure it ends in a \n
|
||||||
if !strings.HasSuffix(msg, "\n") {
|
if !strings.HasSuffix(msg, "\n") {
|
||||||
msg += "\n"
|
msg += "\n"
|
||||||
}
|
}
|
||||||
|
|
||||||
err := w.conn.writeString(w.framer, w.formatter, p, w.hostname, w.tag, msg)
|
err := conn.writeString(w.framer, w.formatter, p, w.hostname, w.tag, msg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue