grim/convey

Parents c77346921bec
Children 72bd4b285902
Make the formatter look like our old logging (just with the mini timestamps)
--- 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 @@
package logging
import (
+ "bytes"
+ "fmt"
"os"
+ "time"
"github.com/mgutz/ansi"
log "github.com/sirupsen/logrus"
)
+var (
+ 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"),
+ }
+)
+
type Formatter struct {
- fmt *log.TextFormatter
+ disableColors bool
+}
+
+func miniTimestamp() int {
+ return int(time.Since(baseTime) / time.Second)
}
func NewFormatter(color bool) log.Formatter {
- fmt := &log.TextFormatter{
- FullTimestamp: false,
- }
+ disableColors := false
if color {
switch os.Getenv("TERM") {
case "win":
fallthrough
case "dumb":
- fmt.DisableColors = true
+ disableColors = true
}
} else {
- fmt.DisableColors = true
+ disableColors = true
}
return &Formatter{
- fmt: fmt,
+ disableColors: disableColors,
}
}
func (f *Formatter) Format(entry *log.Entry) ([]byte, error) {
- id, found := entry.Data["id"]
- if found {
- delete(entry.Data, "id")
- }
+ var b *bytes.Buffer
- idColor, found := entry.Data["idColor"]
- if found {
- delete(entry.Data, "idColor")
+ if entry.Buffer != nil {
+ b = entry.Buffer
+ } else {
+ b = &bytes.Buffer{}
}
- if id != nil && idColor != nil {
- prefix := ""
- if f.fmt.DisableColors {
- prefix = id.(string) + " "
+ fmt.Fprintf(b, "[%04d] ", miniTimestamp())
+
+ id := entry.Data["id"]
+ if id != "" {
+ idColor := entry.Data["idColor"]
+
+ if f.disableColors && idColor != "" {
+ fmt.Fprintf(b, "%s: ", id)
} else {
- 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 != "" {
+ if f.disableColors {
+ fmt.Fprintf(b, "%s", entry.Message)
+ } else {
+ fmt.Fprintf(b, "%s%s%s", levelColors[entry.Level], entry.Message, ansi.Reset)
+ }
+ }
- return bytes, err
+ b.WriteByte('\n')
+
+ return b.Bytes(), nil
}