diff --git a/logger/log.go b/logger/log.go index a07006b7..4cb01f2f 100644 --- a/logger/log.go +++ b/logger/log.go @@ -18,22 +18,21 @@ type Logger struct { traceLabel string } -func NewStdLogger(time, debug, trace, colors bool) *Logger { +func NewStdLogger(time, debug, trace, colors, pid bool) *Logger { flags := 0 if time { flags = log.LstdFlags | log.Lmicroseconds } - l := &Logger{ - logger: log.New(os.Stderr, pidPrefix(), flags), - debug: debug, - trace: trace, + pre := "" + if pid { + pre = pidPrefix() } - // Check to see if stderr is being redirected and if so turn off color - stat, _ := os.Stderr.Stat() - if (stat.Mode() & os.ModeCharDevice) == 0 { - colors = false + l := &Logger{ + logger: log.New(os.Stderr, pre, flags), + debug: debug, + trace: trace, } if colors { @@ -45,7 +44,7 @@ func NewStdLogger(time, debug, trace, colors bool) *Logger { return l } -func NewFileLogger(filename string, time, debug, trace bool) *Logger { +func NewFileLogger(filename string, time, debug, trace, pid bool) *Logger { fileflags := os.O_WRONLY | os.O_APPEND | os.O_CREATE f, err := os.OpenFile(filename, fileflags, 0660) if err != nil { @@ -57,8 +56,13 @@ func NewFileLogger(filename string, time, debug, trace bool) *Logger { flags = log.LstdFlags | log.Lmicroseconds } + pre := "" + if pid { + pre = pidPrefix() + } + l := &Logger{ - logger: log.New(f, pidPrefix(), flags), + logger: log.New(f, pre, flags), debug: debug, trace: trace, } diff --git a/logger/log_test.go b/logger/log_test.go index cadc9cb7..1633749a 100644 --- a/logger/log_test.go +++ b/logger/log_test.go @@ -1,3 +1,4 @@ +// Copyright 2014-2015 Apcera Inc. All rights reserved. package logger import ( @@ -10,7 +11,7 @@ import ( ) func TestStdLogger(t *testing.T) { - logger := NewStdLogger(false, false, false, false) + logger := NewStdLogger(false, false, false, false, false) flags := logger.logger.Flags() if flags != 0 { @@ -27,10 +28,10 @@ func TestStdLogger(t *testing.T) { } func TestStdLoggerWithDebugTraceAndTime(t *testing.T) { - logger := NewStdLogger(true, true, true, false) + logger := NewStdLogger(true, true, true, false, false) flags := logger.logger.Flags() - if flags != log.LstdFlags { + if flags != log.LstdFlags|log.Lmicroseconds { t.Fatalf("Expected %d, received %d\n", log.LstdFlags, flags) } @@ -45,42 +46,42 @@ func TestStdLoggerWithDebugTraceAndTime(t *testing.T) { func TestStdLoggerNotice(t *testing.T) { expectOutput(t, func() { - logger := NewStdLogger(false, false, false, false) + logger := NewStdLogger(false, false, false, false, false) logger.Noticef("foo") - }, "[INFO] foo\n") + }, "[INF] foo\n") } func TestStdLoggerNoticeWithColor(t *testing.T) { expectOutput(t, func() { - logger := NewStdLogger(false, false, false, true) + logger := NewStdLogger(false, false, false, true, false) logger.Noticef("foo") - }, "[\x1b[32mINFO\x1b[0m] foo\n") + }, "[\x1b[32mINF\x1b[0m] foo\n") } func TestStdLoggerDebug(t *testing.T) { expectOutput(t, func() { - logger := NewStdLogger(false, true, false, false) + logger := NewStdLogger(false, true, false, false, false) logger.Debugf("foo %s", "bar") - }, "[DEBUG] foo bar\n") + }, "[DBG] foo bar\n") } func TestStdLoggerDebugWithOutDebug(t *testing.T) { expectOutput(t, func() { - logger := NewStdLogger(false, false, false, false) + logger := NewStdLogger(false, false, false, false, false) logger.Debugf("foo") }, "") } func TestStdLoggerTrace(t *testing.T) { expectOutput(t, func() { - logger := NewStdLogger(false, false, true, false) + logger := NewStdLogger(false, false, true, false, false) logger.Tracef("foo") - }, "[TRACE] foo\n") + }, "[TRC] foo\n") } func TestStdLoggerTraceWithOutDebug(t *testing.T) { expectOutput(t, func() { - logger := NewStdLogger(false, false, false, false) + logger := NewStdLogger(false, false, false, false, false) logger.Tracef("foo") }, "") } @@ -95,7 +96,7 @@ func TestFileLogger(t *testing.T) { file, err := ioutil.TempFile(tmpDir, "gnatsd:log_") file.Close() - logger := NewFileLogger(file.Name(), false, false, false) + logger := NewFileLogger(file.Name(), false, false, false, false) logger.Noticef("foo") buf, err := ioutil.ReadFile(file.Name()) @@ -106,7 +107,7 @@ func TestFileLogger(t *testing.T) { t.Fatal("Expected a non-zero length logfile") } - if string(buf) != "[INFO] foo\n" { + if string(buf) != "[INF] foo\n" { t.Fatalf("Expected '%s', received '%s'\n", "[INFO] foo", string(buf)) } }