logrus 仓库地址:https://github.com/sirupsen/logrus
实现代码:
func init() { // 配置日志格式 logrus.SetReportCaller(true) logrus.SetFormatter(&MyFormatter{}) logrus.SetLevel(logrus.DebugLevel) } type MyFormatter struct{} func (m *MyFormatter) Format(entry *logrus.Entry) ([]byte, error) { var b *bytes.Buffer if entry.Buffer != nil { b = entry.Buffer } else { b = &bytes.Buffer{} } r, e := json.Marshal(entry.Caller.Entry) fmt.Println(string(r), e) timestamp := entry.Time.Format("2006-01-02 15:04:05") var newLog string if entry.Level == logrus.ErrorLevel { newLog = fmt.Sprintf("%s \u001B[41m[%s]\u001B[0m %s:%d %s\n", timestamp, entry.Level, entry.Caller.File, entry.Caller.Line, entry.Message) } else if entry.Level == logrus.WarnLevel { newLog = fmt.Sprintf("%s \u001B[43m[%s]\u001B[0m %s:%d %s\n", timestamp, entry.Level, entry.Caller.File, entry.Caller.Line, entry.Message) } else if entry.Level == logrus.InfoLevel { newLog = fmt.Sprintf("%s \u001B[46m[%s]\u001B[0m %s:%d %s\n", timestamp, entry.Level, entry.Caller.File, entry.Caller.Line, entry.Message) } else { newLog = fmt.Sprintf("%s \u001B[47m[%s]\u001B[0m %s:%d %s\n", timestamp, entry.Level, entry.Caller.File, entry.Caller.Line, entry.Message) } b.WriteString(newLog) return b.Bytes(), nil }
输出日志内容格式:
2023-02-16 09:18:46 [info] /Users/jackey/test/main.go:33 prot:[8081] 2023-02-16 09:18:46 [error] /Users/jackey/test/main.go:34 prot:[8081]