text-formatter: assume that IsTerminal doesn't change during execution
diff --git a/entry.go b/entry.go
index 44ff056..58eb263 100644
--- a/entry.go
+++ b/entry.go
@@ -28,8 +28,6 @@
 	Message string
 }
 
-var baseTimestamp time.Time
-
 func NewEntry(logger *Logger) *Entry {
 	return &Entry{
 		Logger: logger,
diff --git a/text_formatter.go b/text_formatter.go
index 4b93690..0f38c45 100644
--- a/text_formatter.go
+++ b/text_formatter.go
@@ -16,8 +16,14 @@
 	blue    = 34
 )
 
+var (
+	baseTimestamp time.Time
+	isTerminal    bool
+)
+
 func init() {
 	baseTimestamp = time.Now()
+	isTerminal = IsTerminal()
 }
 
 func miniTS() int {
@@ -31,11 +37,12 @@
 }
 
 func (f *TextFormatter) Format(entry *Entry) ([]byte, error) {
+
 	b := &bytes.Buffer{}
 
 	prefixFieldClashes(entry)
 
-	if (f.ForceColors || IsTerminal()) && !f.DisableColors {
+	if (f.ForceColors || isTerminal) && !f.DisableColors {
 		levelText := strings.ToUpper(entry.Data["level"].(string))[0:4]
 
 		levelColor := blue
@@ -50,8 +57,8 @@
 
 		fmt.Fprintf(b, "\x1b[%dm%s\x1b[0m[%04d] %-44s ", levelColor, levelText, miniTS(), entry.Data["msg"])
 
-		keys := make([]string, 0)
-		for k, _ := range entry.Data {
+		var keys []string
+		for k := range entry.Data {
 			if k != "level" && k != "time" && k != "msg" {
 				keys = append(keys, k)
 			}