50 lines
1.1 KiB
Go
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
|
|
}
|