diff --git a/jww_test.go b/jww_test.go
index b6d118a..50e20a4 100644
--- a/jww_test.go
+++ b/jww_test.go
@@ -6,51 +6,52 @@
 package jwalterweatherman
 
 import (
-    "bytes"
-    "github.com/stretchr/testify/assert"
-    "testing"
+	"bytes"
+	"github.com/stretchr/testify/assert"
+	"testing"
 )
 
 func TestLevels(t *testing.T) {
-    SetStdoutThreshold(LevelError)
-    assert.Equal(t, StdoutThreshold(), LevelError)
-    SetLogThreshold(LevelCritical)
-    assert.Equal(t, LogThreshold(), LevelCritical)
-    assert.NotEqual(t, StdoutThreshold(), LevelCritical)
-    SetStdoutThreshold(LevelWarn)
-    assert.Equal(t, StdoutThreshold(), LevelWarn)
+	SetStdoutThreshold(LevelError)
+	assert.Equal(t, StdoutThreshold(), LevelError)
+	SetLogThreshold(LevelCritical)
+	assert.Equal(t, LogThreshold(), LevelCritical)
+	assert.NotEqual(t, StdoutThreshold(), LevelCritical)
+	SetStdoutThreshold(LevelWarn)
+	assert.Equal(t, StdoutThreshold(), LevelWarn)
 }
 
 func TestDefaultLogging(t *testing.T) {
-    outputBuf := new(bytes.Buffer)
-    logBuf := new(bytes.Buffer)
-    LogHandle = logBuf
-    OutHandle = outputBuf
+	outputBuf := new(bytes.Buffer)
+	logBuf := new(bytes.Buffer)
+	LogHandle = logBuf
+	OutHandle = outputBuf
 
-    SetLogThreshold(LevelWarn)
-    SetStdoutThreshold(LevelError)
+	SetLogThreshold(LevelWarn)
+	SetLogFlag(DATE | TIME | LFILE)
+	SetStdoutThreshold(LevelError)
 
-    FATAL.Println("fatal err")
-    CRITICAL.Println("critical err")
-    ERROR.Println("an error")
-    WARN.Println("a warning")
-    INFO.Println("information")
-    DEBUG.Println("debugging info")
-    TRACE.Println("trace")
+	FATAL.Println("fatal err")
+	CRITICAL.Println("critical err")
+	ERROR.Println("an error")
+	WARN.Println("a warning")
+	INFO.Println("information")
+	DEBUG.Println("debugging info")
+	TRACE.Println("trace")
 
-    assert.Contains(t, logBuf.String(), "fatal err")
-    assert.Contains(t, logBuf.String(), "critical err")
-    assert.Contains(t, logBuf.String(), "an error")
-    assert.Contains(t, logBuf.String(), "a warning")
-    assert.NotContains(t, logBuf.String(), "information")
-    assert.NotContains(t, logBuf.String(), "debugging info")
-    assert.NotContains(t, logBuf.String(), "trace")
+	assert.Contains(t, logBuf.String(), "fatal err")
+	assert.Contains(t, logBuf.String(), "critical err")
+	assert.Contains(t, logBuf.String(), "an error")
+	assert.Contains(t, logBuf.String(), "a warning")
+	assert.NotContains(t, logBuf.String(), "information")
+	assert.NotContains(t, logBuf.String(), "debugging info")
+	assert.NotContains(t, logBuf.String(), "trace")
 
-    assert.Contains(t, outputBuf.String(), "fatal err")
-    assert.Contains(t, outputBuf.String(), "critical err")
-    assert.Contains(t, outputBuf.String(), "an error")
-    assert.NotContains(t, outputBuf.String(), "a warning")
-    assert.NotContains(t, outputBuf.String(), "information")
-    assert.NotContains(t, outputBuf.String(), "debugging info")
-    assert.NotContains(t, outputBuf.String(), "trace")
+	assert.Contains(t, outputBuf.String(), "fatal err")
+	assert.Contains(t, outputBuf.String(), "critical err")
+	assert.Contains(t, outputBuf.String(), "an error")
+	assert.NotContains(t, outputBuf.String(), "a warning")
+	assert.NotContains(t, outputBuf.String(), "information")
+	assert.NotContains(t, outputBuf.String(), "debugging info")
+	assert.NotContains(t, outputBuf.String(), "trace")
 }
diff --git a/thatswhyyoualwaysleaveanote.go b/thatswhyyoualwaysleaveanote.go
index db350cb..e7abe01 100644
--- a/thatswhyyoualwaysleaveanote.go
+++ b/thatswhyyoualwaysleaveanote.go
@@ -65,6 +65,13 @@
 	fatal           *NotePad = &NotePad{Level: LevelFatal, Handle: os.Stdout, Logger: &FATAL, Prefix: "FATAL: "}
 	logThreshold    Level    = DefaultLogThreshold
 	outputThreshold Level    = DefaultStdoutThreshold
+
+	DATE     = log.Ldate
+	TIME     = log.Ltime
+	SFILE    = log.Lshortfile
+	LFILE    = log.Llongfile
+	MSEC     = log.Lmicroseconds
+	logFlags = DATE | TIME | SFILE
 )
 
 func init() {
@@ -91,12 +98,17 @@
 	}
 
 	for _, n := range NotePads {
-		*n.Logger = log.New(n.Handle, n.Prefix, log.Ldate)
+		*n.Logger = log.New(n.Handle, n.Prefix, logFlags)
 	}
 
 	LOG = log.New(LogHandle,
 		"LOG:   ",
-		log.Ldate|log.Ltime|log.Lshortfile)
+		logFlags)
+}
+
+// Set the log Flags (Available flag: DATE, TIME, SFILE, LFILE and MSEC)
+func SetLogFlag(flags int) {
+	logFlags = flags
 }
 
 // Level returns the current global log threshold.
