代码拉取完成,页面将自动刷新
package logrus
import (
"fmt"
. "gitee.com/kristas/booting-go/framework/common/util/console"
"gitee.com/kristas/booting-go/framework/common/util/lang"
"gitee.com/kristas/booting-go/framework/core/configure"
"gitee.com/kristas/booting-go/framework/logging"
"github.com/sirupsen/logrus"
"strconv"
"strings"
)
var DefaultAdapter = new(Adapter)
func init() {
logging.Register("logrus", DefaultAdapter)
}
type Adapter struct {
}
func (r *Adapter) CreateLog() logging.Logger {
logger := logrus.New()
logger.SetReportCaller(true)
config := new(logging.Configure)
configure.InjectConfiguration(config)
level, err := logrus.ParseLevel(config.Level)
if err != nil {
level, _ = logrus.ParseLevel("INFO")
}
logger.SetLevel(level)
logger.SetReportCaller(true)
logger.SetFormatter(&FrameFormatter{})
return logger
}
type FrameFormatter struct {
}
func (f *FrameFormatter) Format(entry *logrus.Entry) ([]byte, error) {
data := entry.Data
s := fmt.Sprintf("%s%s%s%s%s ",
Draw(Red, "["+entry.Time.Format("2006-01-02 15:04:05.000")+"]"),
colorLevelMap[strings.ToLower(entry.Level.String())],
Draw(Magenta, "["+packageParser(entry.Caller.Function)+"]"),
Draw(Magenta, "["+entry.Caller.File[strings.LastIndex(entry.Caller.File, "/")+1:]+":"+strconv.Itoa(entry.Caller.Line)+"] - "),
Draw(Cyan, entry.Message))
var skipField = []string{"file", "line", "packageName", "funcName"}
for k, v := range data {
if !contains(skipField, k) {
s += Draw(Blue, fmt.Sprintf("[%s = %s]", k, v))
}
}
return append([]byte(s), '\n'), nil
}
var colorLevelMap = map[string]string{
"trace": levelParser(BlueBold, "trace"),
"debug": levelParser(CyanBold, "debug"),
"info": levelParser(GreenBold, "info"),
"warn": levelParser(YellowBold, "warn"),
"warning": levelParser(YellowBold, "warn"),
"error": levelParser(RedBold, "error"),
"fatal": levelParser(RedBold, "fatal"),
"panic": levelParser(RedBold, "panic"),
}
func levelParser(color int, level string) string {
return Drawf(color, "[%-5s]", level)
//return Draw(color,fmt.Sprintf("[%-5s]",level))
}
type Configure struct {
SkipIndex int `yaml:"skip_index"`
}
func (l *Configure) Prefix() string {
return "logrus"
}
func packageParser(pkg string) string {
split := lang.NewString(pkg).ReplaceAll("/", ".").Split(".")
pkgArr := lang.TransferSliceToSimple(split)
var tmp []string
l := new(Configure)
configure.InjectConfiguration(l)
skipIndex := l.SkipIndex
for i, s := range pkgArr {
if i < skipIndex {
tmp = append(tmp, s[:1])
} else {
tmp = append(tmp, s)
}
}
return strings.Join(tmp, ".")
}
func contains(arr []string, str string) bool {
for i := range arr {
if arr[i] == str {
return true
}
}
return false
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。