Merge pull request #446 from AndrewBurian/json-disable-timestamp

Json disable timestamp
diff --git a/json_formatter.go b/json_formatter.go
index f3729bf..266554e 100644
--- a/json_formatter.go
+++ b/json_formatter.go
@@ -26,6 +26,9 @@
 	// TimestampFormat sets the format used for marshaling timestamps.
 	TimestampFormat string
 
+	// DisableTimestamp allows disabling automatic timestamps in output
+	DisableTimestamp bool
+
 	// FieldMap allows users to customize the names of keys for various fields.
 	// As an example:
 	// formatter := &JSONFormatter{
@@ -57,7 +60,9 @@
 		timestampFormat = DefaultTimestampFormat
 	}
 
-	data[f.FieldMap.resolve(FieldKeyTime)] = entry.Time.Format(timestampFormat)
+	if !f.DisableTimestamp {
+		data[f.FieldMap.resolve(FieldKeyTime)] = entry.Time.Format(timestampFormat)
+	}
 	data[f.FieldMap.resolve(FieldKeyMsg)] = entry.Message
 	data[f.FieldMap.resolve(FieldKeyLevel)] = entry.Level.String()
 
diff --git a/json_formatter_test.go b/json_formatter_test.go
index 5baa93e..51093a7 100644
--- a/json_formatter_test.go
+++ b/json_formatter_test.go
@@ -169,3 +169,31 @@
 		t.Fatal("Expected JSON to format time key")
 	}
 }
+
+func TestJSONDisableTimestamp(t *testing.T) {
+	formatter := &JSONFormatter{
+		DisableTimestamp: true,
+	}
+
+	b, err := formatter.Format(WithField("level", "something"))
+	if err != nil {
+		t.Fatal("Unable to format entry: ", err)
+	}
+	s := string(b)
+	if strings.Contains(s, FieldKeyTime) {
+		t.Error("Did not prevent timestamp", s)
+	}
+}
+
+func TestJSONEnableTimestamp(t *testing.T) {
+	formatter := &JSONFormatter{}
+
+	b, err := formatter.Format(WithField("level", "something"))
+	if err != nil {
+		t.Fatal("Unable to format entry: ", err)
+	}
+	s := string(b)
+	if !strings.Contains(s, FieldKeyTime) {
+		t.Error("Timestamp not present", s)
+	}
+}