1 Star 2 Fork 3

kristas/booting-go

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
logrus_adapter.go 1.66 KB
一键复制 编辑 原始数据 按行查看 历史
kristas 提交于 2021-04-10 00:37 . fix: bug fix
package logging
import (
"fmt"
"gitee.com/kristas/booting-go/framework/common/util/lang"
"gitee.com/kristas/booting-go/framework/core/config_loader"
"github.com/sirupsen/logrus"
"strconv"
"strings"
)
type logrusAdapter struct {
}
func (r *logrusAdapter) CreateLog() *logrus.Logger {
logger := logrus.New()
logger.SetReportCaller(true)
loggingLevel := config_loader.ParserString("logging.level").(string)
level, err := logrus.ParseLevel(loggingLevel)
if err != nil {
level, _ = logrus.ParseLevel("INFO")
}
logger.SetLevel(level)
logger.SetReportCaller(true)
logger.SetFormatter(new(FrameFormatter))
return logger
}
type FrameFormatter struct {
}
func (f *FrameFormatter) Format(entry *logrus.Entry) ([]byte, error) {
data := entry.Data
s := fmt.Sprintf("[%s][%-5s][%s][%s] - %s ",
entry.Time.Format("2006-01-02 15:04:05.000"),
strings.ToLower(entry.Level.String()),
packageParser(entry.Caller.Function),
entry.Caller.File[strings.LastIndex(entry.Caller.File, "/")+1:]+":"+strconv.Itoa(entry.Caller.Line),
entry.Message)
var skipField = []string{"file", "line", "packageName", "funcName"}
for k, v := range data {
if !contains(skipField, k) {
s += fmt.Sprintf("[%s = %s]", k, v)
}
}
return append([]byte(s), '\n'), nil
}
func packageParser(pkg string) string {
split := lang.NewString(pkg).ReplaceAll("/", ".").Split(".")
pkgArr := lang.TransferSliceToSimple(split)
var tmp []string
for i, s := range pkgArr {
if i < 4 {
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
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/kristas/booting-go.git
git@gitee.com:kristas/booting-go.git
kristas
booting-go
booting-go
v1.1.7

搜索帮助