authorizer/server/logs/text.go
Untone 46e93aeefd
All checks were successful
deploy / deploy (push) Successful in 1m31s
log-inside-post
2024-06-06 14:50:29 +03:00

50 lines
1.1 KiB
Go

package logs
import (
"fmt"
"path/filepath"
"strings"
"github.com/sirupsen/logrus"
)
type LogTextFormatter struct {
logrus.Formatter
}
func (u LogTextFormatter) Format(e *logrus.Entry) ([]byte, error) {
level := strings.ToUpper(e.Level.String())
message := e.Message
parts := strings.SplitN(message, " +0000]", 2)
if len(parts) >= 2 {
message = parts[1]
}
var color string
switch e.Level {
case logrus.DebugLevel:
color = "\033[36m" // cyan
case logrus.InfoLevel:
color = "\033[37m" // grey
case logrus.WarnLevel:
color = "\033[33m" // yellow
case logrus.ErrorLevel, logrus.FatalLevel, logrus.PanicLevel:
color = "\033[31m" // red
default:
color = "\033[0m" // reset
}
var fields string
for key, value := range e.Data {
fields += fmt.Sprintf("%s=%v ", key, value)
}
if e.Caller != nil {
file := filepath.Base(e.Caller.File)
line := e.Caller.Line
return []byte(fmt.Sprintf("%s[%s] %s:%d %s %s%s\033[0m\n", color, level, file, line, message, fields, color)), nil
}
return []byte(fmt.Sprintf("%s[%s] %s %s%s\033[0m\n", color, level, message, fields, color)), nil
}