--- a/logging/formatter.go Sat Jul 27 15:19:35 2019 -0500
+++ b/logging/formatter.go Sun Jul 28 22:53:31 2019 -0500
@@ -17,60 +17,87 @@
log "github.com/sirupsen/logrus"
+ baseTime time.Time = time.Now() + levelColors map[log.Level]string = map[log.Level]string{ + log.PanicLevel: ansi.ColorCode("red+h"), + log.FatalLevel: ansi.ColorCode("red+b"), + log.ErrorLevel: ansi.ColorCode("red"), + log.WarnLevel: ansi.ColorCode("yellow"), + log.InfoLevel: ansi.ColorCode("green"), + log.DebugLevel: ansi.ColorCode("cyan"), + log.TraceLevel: ansi.ColorCode("white+h"),
+func miniTimestamp() int { + return int(time.Since(baseTime) / time.Second) func NewFormatter(color bool) log.Formatter {
- fmt := &log.TextFormatter{
switch os.Getenv("TERM") {
- fmt.DisableColors = true
- fmt.DisableColors = true
+ disableColors: disableColors, func (f *Formatter) Format(entry *log.Entry) ([]byte, error) {
- id, found := entry.Data["id"]
- delete(entry.Data, "id")
- idColor, found := entry.Data["idColor"]
- delete(entry.Data, "idColor")
+ if entry.Buffer != nil { - if id != nil && idColor != nil {
- if f.fmt.DisableColors {
- prefix = id.(string) + " "
+ fmt.Fprintf(b, "[%04d] ", miniTimestamp()) + idColor := entry.Data["idColor"] + if f.disableColors && idColor != "" { + fmt.Fprintf(b, "%s: ", id) - prefix = idColor.(string) + id.(string) + ansi.Reset
+ fmt.Fprintf(b, "%s%s%s: ", idColor, id, ansi.Reset)
- entry.Message = prefix + ": " + entry.Message
- bytes, err := f.fmt.Format(entry)
+ if entry.Message != "" { + fmt.Fprintf(b, "%s", entry.Message) + fmt.Fprintf(b, "%s%s%s", levelColors[entry.Level], entry.Message, ansi.Reset)