From ad7f4c74b2fb59e4d9e0defa5b1f54114a007897 Mon Sep 17 00:00:00 2001 From: Ian Campbell Date: Fri, 1 Jul 2016 13:44:32 +0100 Subject: [PATCH] vsudd: Log over syslog This means that with the previous patches normal vsudd logging will be logged on the console. The exceptional case of error logging during syslog forwarding established in the previous patch remains in place. Prior to this the vsudd.log was actually in /run/vsudd.log and not in /var/log/ (exported to the host) as expected. Prior to c5940b34795a ("Bind the original /var/log onto /run/log") the log was simply shadowed under the fuse mount over /var/log. Signed-off-by: Ian Campbell --- alpine/packages/vsudd/etc/init.d/vsudd | 5 ++--- alpine/packages/vsudd/main.go | 16 +++++++++++++--- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/alpine/packages/vsudd/etc/init.d/vsudd b/alpine/packages/vsudd/etc/init.d/vsudd index e9b89ddf1..7e987ff24 100755 --- a/alpine/packages/vsudd/etc/init.d/vsudd +++ b/alpine/packages/vsudd/etc/init.d/vsudd @@ -20,7 +20,6 @@ start() fi [ -n "${PIDFILE}" ] || PIDFILE=/var/run/vsudd.pid - [ -n "${LOGFILE}" ] || LOGFILE=/var/log/vsudd.log if [ -n "$SYSLOG_PORT" ] ; then # Can be inlined below once Windows defines syslog port @@ -31,9 +30,9 @@ start() --background \ --exec /sbin/vsudd \ --make-pidfile --pidfile ${PIDFILE} \ - --stderr "${LOGFILE}" --stdout "${LOGFILE}" \ -- -inport "${DOCKER_PORT}:unix:/var/run/docker.sock" \ - ${SYSLOG_OPT} + ${SYSLOG_OPT} \ + -detach eend $? "Failed to start vsudd" } diff --git a/alpine/packages/vsudd/main.go b/alpine/packages/vsudd/main.go index 7cc0639e2..94da4faf9 100644 --- a/alpine/packages/vsudd/main.go +++ b/alpine/packages/vsudd/main.go @@ -5,6 +5,7 @@ import ( "fmt" "io" "log" + "log/syslog" "net" "os" "strconv" @@ -66,15 +67,24 @@ func main() { flag.Parse() if detach { - logFile, err := os.Create("/var/log/vsudd.log") + syslog, err := syslog.New(syslog.LOG_INFO|syslog.LOG_DAEMON, "vsudd") if err != nil { - log.Fatalln("Failed to open log file", err) + log.Fatalln("Failed to open syslog", err) } - log.SetOutput(logFile) + null, err := os.OpenFile("/dev/null", os.O_RDWR, 0) if err != nil { log.Fatalln("Failed to open /dev/null", err) } + + /* Don't do this above since we aren't yet forwarding + /* syslog (if we've been asked to) so the above error + /* reporting wants to go via the default path + /* (stdio). */ + + log.SetOutput(syslog) + log.SetFlags(0) + fd := null.Fd() syscall.Dup2(int(fd), int(os.Stdin.Fd())) syscall.Dup2(int(fd), int(os.Stdout.Fd()))