From 7caa68e3be769381c1cbf667856a605c16d0393b Mon Sep 17 00:00:00 2001 From: Aaron Jacobs Date: Wed, 29 Apr 2015 11:19:55 +1000 Subject: [PATCH] Don't initialize logger multiple times. --- debug.go | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/debug.go b/debug.go index c8de723..b1ba48a 100644 --- a/debug.go +++ b/debug.go @@ -20,6 +20,7 @@ import ( "io/ioutil" "log" "os" + "sync" ) var fEnableDebug = flag.Bool( @@ -27,13 +28,24 @@ var fEnableDebug = flag.Bool( false, "Write FUSE debugging messages to stderr.") -// Create a logger based on command-line flag settings. -func getLogger() *log.Logger { +var gLogger *log.Logger +var gLoggerOnce sync.Once + +func initLogger() { + if !flag.Parsed() { + panic("initLogger called before flags available.") + } + var writer io.Writer = ioutil.Discard if *fEnableDebug { writer = os.Stderr } const flags = log.Ldate | log.Ltime | log.Lmicroseconds | log.Lshortfile - return log.New(writer, "fuse: ", flags) + gLogger = log.New(writer, "fuse: ", flags) +} + +func getLogger() *log.Logger { + gLoggerOnce.Do(initLogger) + return gLogger }