60 lines
1.5 KiB
Go
60 lines
1.5 KiB
Go
package logger
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
"time"
|
|
|
|
"git.rob.mx/nidito/chinampa/pkg/runtime"
|
|
"github.com/sirupsen/logrus"
|
|
)
|
|
|
|
type Formatter struct {
|
|
}
|
|
|
|
func (f *Formatter) Format(entry *logrus.Entry) ([]byte, error) {
|
|
prefix := ""
|
|
colorEnabled := runtime.ColorEnabled()
|
|
message := entry.Message
|
|
if runtime.VerboseEnabled() {
|
|
date := strings.Replace(entry.Time.Local().Format(time.DateTime), " ", "T", 1)
|
|
component := ""
|
|
if c, ok := entry.Data[componentKey]; ok {
|
|
component = " " + c.(string)
|
|
}
|
|
level := entry.Level.String()
|
|
if colorEnabled {
|
|
if entry.Level <= logrus.ErrorLevel {
|
|
level = "\033[31m\033[1m" + level + "\033[0m"
|
|
} else if entry.Level == logrus.WarnLevel {
|
|
level = "\033[33m\033[1m" + level + "\033[0m"
|
|
} else if entry.Level >= logrus.DebugLevel && colorEnabled {
|
|
message = "\033[2m" + message + "\033[0m"
|
|
}
|
|
}
|
|
|
|
prefix = fmt.Sprintf("\033[2m%s %s%s\033[0m\t", date, level, component)
|
|
} else if entry.Level == logrus.ErrorLevel {
|
|
if colorEnabled {
|
|
prefix = "\033[41m\033[1m ERROR \033[0m "
|
|
} else {
|
|
prefix = "ERROR: "
|
|
}
|
|
} else if entry.Level == logrus.WarnLevel {
|
|
if colorEnabled {
|
|
prefix = "\033[43m\033[31m warning \033[0m "
|
|
message = "\033[33m" + message + "\033[0m"
|
|
} else {
|
|
prefix = "WARNING: "
|
|
}
|
|
} else if entry.Level >= logrus.DebugLevel {
|
|
if colorEnabled {
|
|
prefix = "\033[2m" + entry.Level.String() + ":\033[0m "
|
|
message = "\033[2m" + message + "\033[0m"
|
|
} else {
|
|
prefix = strings.ToUpper(entry.Level.String()) + ": "
|
|
}
|
|
}
|
|
return []byte(prefix + message + "\n"), nil
|
|
}
|