golang logrus 通过自定义 logger.Formatter 格式化日志,为日志不同级别定义颜色,输出日志源代码溯源,日期等信息

望舒的头像
望舒
标签:
golanglogger.Formatterlogrus

golang logrus 通过自定义 logger.Formatter 格式化日志,为日志不同级别定义颜色,输出日志源代码溯源,日期等信息

custom-formatter.go 代码

复制
import (
	"fmt"
	"github.com/sirupsen/logrus"
	"enum"
	"runtime"
	"strings"
	"time"
)

const OtherRedFormat = enum.Red + "%s | %s | %s   | %s:%d | %s\n" + enum.Reset
const WarnYellowFormat = enum.Yellow + "%s | %s | %s | %s:%d | %s\n" + enum.Reset
const InfoFormat = enum.Blue + "%s | " + enum.Green + "%s | " + enum.Blue + "%s    | " + enum.Green + "%s:%d | " + enum.Cyan + "%s\n" + enum.Reset

type CustomFormatter struct {
	Prefix string
}

func NewCustomFormatter(prefix string) CustomFormatter {
	return CustomFormatter{
		Prefix: prefix,
	}
}

func (f *CustomFormatter) Format(entry *logrus.Entry) ([]byte, error) {
	_, file, line, ok := runtime.Caller(8)
	if !ok {
		_ = "unknown"
		line = 0
	}
	buffer := entry.Buffer
	datetime := entry.Time.Format(time.DateTime)
	level := strings.ToUpper(entry.Level.String())
	switch entry.Level {
	case logrus.DebugLevel, logrus.TraceLevel, logrus.ErrorLevel, logrus.FatalLevel, logrus.PanicLevel:
		fmt.Fprintf(buffer, OtherRedFormat, f.Prefix, datetime, level, file, line, entry.Message)
	case logrus.WarnLevel:
		fmt.Fprintf(buffer, WarnYellowFormat, f.Prefix, datetime, level, file, line, entry.Message)
	case logrus.InfoLevel:
		fmt.Fprintf(buffer, InfoFormat, f.Prefix, datetime, level, file, line, entry.Message)
	}
	return buffer.Bytes(), nil
}

enum.go 代码

复制
type ConsoleColorEnum string

const (
	Green   = "\033[32m"
	White   = "\033[37m"
	Yellow  = "\033[33m"
	Red     = "\033[31m"
	Blue    = "\033[34m"
	Magenta = "\033[35m"
	Cyan    = "\033[36m"
	Reset   = "\033[0m"
)

log.go 代码

复制
import (
	"github.com/sirupsen/logrus"
	"strings"
)

var log *logrus.Logger

func InitLog(logger *logrus.Logger) {
	log = logger
}

func GetLog() *logrus.Logger {
	return log
}

func NewDefaultLog(prefix string,logLevel *logrus.Level) *logrus.Logger {
	logger := logrus.New()
	logger.SetFormatter(&CustomFormatter{
		Prefix: prefix,
	})
	return logger
}

作者:https://blog.xn--rpv331d.com/望舒

链接:https://blog.xn--rpv331d.com/望舒/blog/52

转载注意保留文章出处...

‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌​‌‌‌‌‌​‌‌‌‌‌​‌‌‌​‌‌‌‌​​‌​‌‌‌​‌‌‌​​‌‌‌‌‌‌‌‌‌‌​‌‌‌​‌‌‌‌‌​‌​‌‌‌​‌‌‌‌‌‌‌‌​​‌​‌‌‌​‌‌‌‌‌‌‌‌​​‌​‌‌‌‌‌‌‌‌​‌‌‌‌‌‌​‌‌‌‌‌‌‌​‌‌‌‌​​‌‌‌‌‌​‌‌‌​​‌‌‌‌‌‌​‌‌‌​‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​​‌‌‌‌‌‌​‌‌‌​‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌​‌‌‌‌​​‌‌‌‌‌‌‌‌‌‌​‌‌‌​‌‌‌‌‌‌​​‌​‌​‌​​‌‌​‌​‌‌‌‌​‌​‌‌​‌‌‌‌​‌‌​‌​​​‌​​​​​​​‌​‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌​‌‌‌​‌‌‌‌‌​‌​‌‌‌‌‌‌‌​‌‌‌‌‌​‌‌‌‌‌​‌‌‌​​‌‌‌‌​‌‌‌‌‌​‌‌‌‌‌‌‌‌​​‌‌‌‌‌​‌‌‌​‌‌‌‌‌‌‌​‌‌‌​‌‌‌​‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌​‌‌‌‌‌‌‌​‌‌‌‌​​‌‌‌‌‌​‌‌‌​​‌‌‌‌​‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌​‌‌‌‌‌​‌‌‌‌‌‌‌‌​​‌​‌‌‌‌‌‌‌‌​‌‌‌​​‌‌‌‌‌‌‌‌‌​​‌‌‌​‌‌​‌‌‌‌‌‌‌​​‌‌‌​‌‌​‌‌‌​‌‌‌​‌‌‌‌​​‌‌‌‌‌​‌‌‌​​‌‌‌‌‌‌‌‌‌‌​‌‌‌​​‌‌‌​‌‌​‌‌‌​‌‌‌​‌‌‌‌​‌‌​‌‌‌‌‌‌‌​​‌‌‌​‌‌‌‌‌‌​‌‌‌‌​‌‌‌‌​‌‌‌‌‌​‌‌‌​​‌‌‌​‌‌‌‌‌‌‌‌‌‌​​‌‌‌‌‌‌​‌‌‌‌‌‌‌​​‌‌‌‌‌‌​‌‌‌​‌‌‌‌‌‌‌‌​​‌‌‌‌‌​‌‌‌‌‌‌‌‌‌​‌‌‌‌‌​‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​​‌​‌‌‌‌‌‌‌‌‌‌‌‌​​‌​‌‌‌‌‌‌‌‌‌‌‌‌‌​‌​‌‌‌​‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​​‌‌‌​‌‌‌‌‌‌​‌‌‌​‌‌‌‌​​‌​‌‌‌​‌‌‌​​‌‌‌​‌‌​‌‌‌​‌‌‌​​‌‌‌‌‌‌​‌‌‌‌‌‌‌​​‌‌‌​‌‌​‌‌‌‌​‌​‌​​​‌​​​​​‌‌‌​​‌‌‌‌​‌​​‌‌‌‌‌‌‌‌‌​‌‌‌‌​​‌‌‌‌‌‌‌‌‌​‌‌‌‌‌​‌‌‌‌‌​‌‌‌​‌‌‌‌​​‌​‌‌‌​‌‌‌​​‌‌‌‌‌‌‌‌‌‌​‌‌‌​‌‌‌‌‌​‌​‌‌‌​‌‌‌‌‌‌‌‌​​‌​‌‌‌​‌‌‌‌‌‌‌‌​​‌​‌‌‌‌‌‌‌‌​‌‌‌‌‌‌​‌‌‌‌‌‌‌​‌‌‌‌​​‌‌‌‌‌​‌‌‌​​‌‌‌‌‌‌​‌‌‌​‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​​‌‌‌‌‌‌​‌‌‌​‌‌‌​‌‌‌‌‌​‌​‌‌‌‌‌‌‌​‌‌‌‌​​‌‌‌‌‌‌‌‌‌​‌‌‌‌‌​‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌​‌‌‌‌‌​‌​‌‌‌​‌‌‌‌‌‌‌‌​​‌‌‌‌‌​‌‌‌​‌‌‌‌​‌‌​‌‌‌​‌‌‌​‌‌‌‌‌‌‌​‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌​‌‌‌‌‌‌‌​‌‌‌‌​​‌‌‌‌‌​‌‌‌‌​‌​‌​‌‌​‌‌‌​‌‌‌​‌‌‌‌​​‌‌‌‌‌​‌‌‌​​‌‌‌‌‌‌‌‌‌‌​‌‌‌​‌‌‌‌‌​‌​‌‌‌​‌‌‌​​‌‌‌​‌‌‌‌‌‌​‌‌‌​​‌‌‌​​‌​‌‌‌‌‌‌‌​‌‌‌‌​​‌‌‌‌‌‌‌‌‌‌​‌‌‌​‌‌‌‌‌‌​‌‌‌​​‌‌‌‌​‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌​‌‌‌‌‌​‌‌‌‌‌‌‌‌​​‌​‌‌‌‌‌‌‌‌​‌‌‌​​‌‌‌‌‌‌‌‌‌​​‌‌‌​‌‌​‌‌‌‌‌‌‌​​‌‌‌​‌‌​‌‌‌​‌‌‌​‌‌‌‌​​‌‌‌‌‌​‌‌‌​​‌‌‌‌‌‌‌‌‌‌​‌‌‌​​‌‌‌​‌‌​‌‌‌​‌‌‌​‌‌‌‌​‌‌​‌‌‌‌‌‌‌​​‌‌‌​‌‌‌‌‌‌​‌‌‌‌​‌‌‌‌​‌‌‌‌‌​‌‌‌​​‌‌‌​‌‌‌‌‌‌‌‌‌‌​​‌‌‌‌‌‌​‌‌‌‌‌‌‌​​‌‌‌‌‌‌​‌‌‌​‌‌‌‌‌‌‌‌​​‌‌‌‌‌​‌‌‌‌‌‌‌‌‌​‌‌‌‌‌​‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​​‌​‌‌‌‌‌‌‌‌‌‌‌‌​​‌​‌‌‌‌‌‌‌‌‌‌‌‌‌​‌​‌‌‌​‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​​‌‌‌​‌‌‌‌‌‌​‌‌‌​‌‌‌‌​​‌​‌‌‌​‌‌‌​​‌‌‌​‌‌​‌‌‌​‌‌‌​​‌‌‌‌‌‌​‌‌‌‌‌‌‌​​‌‌‌​‌‌​‌‌‌‌​‌​‌​​​‌​​​​​‌‌‌​​‌‌‌‌​‌​​‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌​​‌‌‌​‌‌​‌‌‌​‌‌‌​‌‌‌‌‌​‌​‌‌‌‌‌‌‌‌​‌‌‌​‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌​​‌‌‌​‌‌​‌‌‌​‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌​‌‌‌​‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌​‌‌‌‌‌​‌‌‌‌‌​‌‌‌​‌‌‌‌​​‌​‌‌‌​‌‌‌​​‌‌‌‌‌‌‌‌‌‌​‌‌‌​‌‌‌‌‌​‌​‌‌‌​‌‌‌‌‌‌‌‌​​‌​‌‌‌​‌‌‌‌‌‌‌‌​​‌​‌‌‌‌‌‌‌‌​‌‌‌‌‌‌​‌‌‌‌‌‌‌​‌‌‌‌​​‌‌‌‌‌​‌‌‌​​‌‌‌‌‌‌​‌‌‌​‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​​‌‌‌‌‌‌​‌‌‌​‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌​‌‌‌‌​​‌‌‌‌‌‌‌‌‌‌​‌‌‌​‌‌‌‌‌​​‌​​‌​‌‌‌​‌‌‌‌​‌‌​‌‌​‌​‌‌‌‌​​​​​‌​​​‌​​​​​​​‌​‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌​‌‌‌​‌‌‌‌‌​‌​‌‌‌‌‌‌‌​‌‌‌‌‌​‌‌‌‌‌​‌‌‌​​‌‌‌‌​‌‌‌‌‌​‌‌‌‌‌‌‌‌​​‌‌‌‌‌​‌‌‌​‌‌‌‌‌‌‌​‌‌‌​‌‌‌​‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌​‌‌‌‌‌‌‌​‌‌‌‌​​‌‌‌‌‌​‌‌‌​​‌‌‌‌​‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌​‌‌‌‌‌​‌‌‌‌‌‌‌‌​​‌​‌‌‌‌‌‌‌‌​‌‌‌​​‌‌‌‌‌‌‌‌‌​​‌‌‌​‌‌​‌‌‌‌‌‌‌​​‌‌‌​‌‌​‌‌‌​‌‌‌​‌‌‌‌​​‌‌‌‌‌​‌‌‌​​‌‌‌‌‌‌‌‌‌‌​‌‌‌​​‌‌‌​‌‌​‌‌‌​‌‌‌​‌‌‌‌​‌‌​‌‌‌‌‌‌‌​​‌‌‌​‌‌‌‌‌‌​‌‌‌‌​‌‌‌‌​‌‌‌‌‌​‌‌‌​​‌‌‌​‌‌‌‌‌‌‌‌‌‌​​‌‌‌‌‌‌​‌‌‌‌‌‌‌​​‌‌‌‌‌‌​‌‌‌​‌‌‌‌‌‌‌‌​​‌‌‌‌‌​‌‌‌‌‌‌‌‌‌​‌‌‌‌‌​‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​​‌​‌‌‌‌‌‌‌‌‌‌‌‌​​‌​‌‌‌‌‌‌‌‌‌‌‌‌‌​‌​‌‌‌​‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​​‌‌‌​‌‌‌‌‌‌​‌‌‌​‌‌‌‌​​‌​‌‌‌​‌‌‌​​‌‌‌​‌‌​‌‌‌​‌‌‌​​‌‌‌‌‌‌​‌‌‌‌‌‌‌​​‌‌‌​‌‌​‌‌‌‌​‌​‌​​​‌​​​​​‌‌‌​​‌‌‌‌​‌​​‌‌‌‌‌‌‌‌‌​​‌‌‌​‌‌​‌‌‌​‌‌‌​‌‌‌‌​​‌‌‌‌‌​‌‌‌​​‌‌‌‌‌‌‌‌‌‌​‌‌‌​​‌‌‌​‌‌​‌‌‌​‌‌‌​‌‌‌‌​‌‌​‌‌‌‌‌‌‌​​‌‌‌​‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌​​‌‌‌‌‌‌‌‌‌​‌‌‌‌​​‌‌‌‌‌‌‌‌‌​‌‌‌‌‌​‌‌‌‌‌​‌‌‌​‌‌‌‌​​‌​‌‌‌​‌‌‌​​‌‌‌‌‌‌‌‌‌‌​‌‌‌​‌‌‌‌‌​‌​‌‌‌​‌‌‌‌‌‌‌‌​​‌​‌‌‌​‌‌‌‌‌‌‌‌​​‌​‌‌‌‌‌‌‌‌​‌‌‌‌‌‌​‌‌‌‌‌‌‌​‌‌‌‌​​‌‌‌‌‌​‌‌‌​​‌‌‌‌‌‌​‌‌‌​‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​​‌‌‌‌‌‌​‌‌‌​‌‌‌​‌‌‌‌‌​‌​‌‌‌‌‌‌‌​‌‌‌‌​​‌‌‌‌‌‌‌‌‌​‌‌‌‌‌​‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌​‌‌‌‌‌​‌​‌‌‌​‌‌‌‌‌‌‌‌​​‌‌‌‌‌​‌‌‌​‌‌‌‌​‌‌​‌‌‌​‌‌‌​‌‌‌‌‌‌‌​‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌​‌‌‌‌‌‌‌​‌‌‌‌​​‌‌‌‌‌​‌‌‌‌​‌​‌​‌‌​‌‌‌​‌‌‌​‌‌‌‌​​‌‌‌‌‌​‌‌‌​​‌‌‌‌‌‌‌‌‌‌​‌‌‌​‌‌‌‌‌​‌​‌‌‌​‌‌‌​​‌‌‌​‌‌‌‌‌‌​‌‌‌​​‌‌‌​​‌​‌‌‌‌‌‌‌​‌‌‌‌​​‌‌‌‌‌‌‌‌‌‌​‌‌‌​‌‌‌‌‌‌​‌‌‌​​‌‌‌‌​‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌​‌‌‌‌‌​‌‌‌‌‌‌‌‌​​‌​‌‌‌‌‌‌‌‌​‌‌‌​​‌‌‌‌‌‌‌‌‌​​‌‌‌​‌‌​‌‌‌‌‌‌‌​​‌‌‌​‌‌​‌‌‌​‌‌‌​‌‌‌‌​​‌‌‌‌‌​‌‌‌​​‌‌‌‌‌‌‌‌‌‌​‌‌‌​​‌‌‌​‌‌​‌‌‌​‌‌‌​‌‌‌‌​‌‌​‌‌‌‌‌‌‌​​‌‌‌​‌‌‌‌‌‌​‌‌‌‌​‌‌‌‌​‌‌‌‌‌​‌‌‌​​‌‌‌​‌‌‌‌‌‌‌‌‌‌​​‌‌‌‌‌‌​‌‌‌‌‌‌‌​​‌‌‌‌‌‌​‌‌‌​‌‌‌‌‌‌‌‌​​‌‌‌‌‌​‌‌‌‌‌‌‌‌‌​‌‌‌‌‌​‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​​‌​‌‌‌‌‌‌‌‌‌‌‌‌​​‌​‌‌‌‌‌‌‌‌‌‌‌‌‌​‌​‌‌‌​‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​​‌‌‌​‌‌‌‌‌‌​‌‌‌​‌‌‌‌​​‌​‌‌‌​‌‌‌​​‌‌‌​‌‌​‌‌‌​‌‌‌​​‌‌‌‌‌‌​‌‌‌‌‌‌‌​​‌‌‌​‌‌​‌‌‌‌​‌​‌​​​‌​​​​​‌‌‌​​‌‌‌‌​‌​​‌‌‌‌‌‌‌‌‌​​‌‌‌​‌‌​‌‌‌​‌‌‌​‌‌‌‌​​‌‌‌‌‌​‌‌‌​​‌‌‌‌‌‌‌‌‌‌​‌‌‌​​‌‌‌​‌‌​‌‌‌​‌‌‌​‌‌‌‌​‌‌​‌‌‌‌‌‌‌​​‌‌‌​‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌​​‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌​​‌‌‌​‌‌​‌‌‌​‌‌‌​‌‌‌‌‌​‌​‌‌‌‌‌‌‌‌​‌‌‌​‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌​​‌‌‌​‌‌​‌‌‌​‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌​‌‌‌​‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌​‌‌‌‌‌​‌‌‌‌‌​‌‌‌​‌‌‌‌​​‌​‌‌‌​‌‌‌​​‌‌‌‌‌‌‌‌‌‌​‌‌‌​‌‌‌‌‌​‌​‌‌‌​‌‌‌‌‌‌‌‌​​‌​‌‌‌​‌‌‌‌‌‌‌‌​​‌​‌‌‌‌‌‌‌‌​‌‌‌‌‌‌​‌‌‌‌‌‌‌​‌‌‌‌​​‌‌‌‌‌​‌‌‌​​‌‌‌‌‌‌​‌‌‌​‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​​‌‌‌‌‌‌​‌‌‌​‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌​‌‌‌‌​​‌‌‌‌‌‌‌‌‌‌​‌‌‌​‌‌‌‌‌‌​​​​​​‌‌​‌‌​‌‌‌‌​​​​‌​‌‌​‌‌​​‌‌‌​‌‌​​​​‌​‌​‌‌​​‌‌‌‌‌​​​​‌​‌​​​‌‌​​‌​‌​‌​​‌‌​​​​​​‌‌​‌​​​‌‌​​​​‌‌‌‌‌​​‌​​‌​‌​​​​​​​‌‌​‌​‌​‌​‌‌​​​​‌‌‌‌​‌‌‌​​​‌​​​‌‌‌‌​‌‌​​‌‌​‌​‌‌‌‌‌‌​​‌‌‌​‌‌‌‌‌‌‌‌‌‌​​‌‌‌​‌‌‌‌‌‌‌‌‌‌​​‌‌‌​‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌​​‌‌‌​‌‌​‌‌‌​‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌​‌‌‌​‌‌‌‌‌
0
0
0
94
No data