allow custom time format string in TextFormatter

- fixes examples in README.md that incorrectly state usage of
  RFC3339Nano format instead of RFC3339
This commit is contained in:
Tiffany Low
2015-03-26 16:04:45 -07:00
parent 3fc34d061b
commit 3e3e87a165
3 changed files with 43 additions and 10 deletions
+11 -4
View File
@@ -18,8 +18,9 @@ const (
)
var (
baseTimestamp time.Time
isTerminal bool
baseTimestamp time.Time
isTerminal bool
defaultTimestampFormat = time.RFC3339
)
func init() {
@@ -46,6 +47,9 @@ type TextFormatter struct {
// the time passed since beginning of execution.
FullTimestamp bool
// Timestamp format to use for display, if a full timestamp is printed
TimestampFormat string
// The fields are sorted by default for a consistent output. For applications
// that log extremely frequently and don't use the JSON formatter this may not
// be desired.
@@ -68,11 +72,14 @@ func (f *TextFormatter) Format(entry *Entry) ([]byte, error) {
isColored := (f.ForceColors || isTerminal) && !f.DisableColors
if f.TimestampFormat == "" {
f.TimestampFormat = defaultTimestampFormat
}
if isColored {
f.printColored(b, entry, keys)
} else {
if !f.DisableTimestamp {
f.appendKeyValue(b, "time", entry.Time.Format(time.RFC3339))
f.appendKeyValue(b, "time", entry.Time.Format(f.TimestampFormat))
}
f.appendKeyValue(b, "level", entry.Level.String())
f.appendKeyValue(b, "msg", entry.Message)
@@ -103,7 +110,7 @@ func (f *TextFormatter) printColored(b *bytes.Buffer, entry *Entry, keys []strin
if !f.FullTimestamp {
fmt.Fprintf(b, "\x1b[%dm%s\x1b[0m[%04d] %-44s ", levelColor, levelText, miniTS(), entry.Message)
} else {
fmt.Fprintf(b, "\x1b[%dm%s\x1b[0m[%s] %-44s ", levelColor, levelText, entry.Time.Format(time.RFC3339), entry.Message)
fmt.Fprintf(b, "\x1b[%dm%s\x1b[0m[%s] %-44s ", levelColor, levelText, entry.Time.Format(f.TimestampFormat), entry.Message)
}
for _, k := range keys {
v := entry.Data[k]