update log format
This commit is contained in:
+42
-24
@@ -1,44 +1,62 @@
|
||||
package logging
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"github.com/engigu/logrus-prefixed-formatter"
|
||||
"github.com/sirupsen/logrus"
|
||||
"message-nest/pkg/setting"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
)
|
||||
|
||||
var Logger = logrus.New()
|
||||
|
||||
type MyFormatter struct{}
|
||||
|
||||
func (m *MyFormatter) Format(entry *logrus.Entry) ([]byte, error) {
|
||||
var b *bytes.Buffer
|
||||
if entry.Buffer != nil {
|
||||
b = entry.Buffer
|
||||
func getFuncOutStr(funcStr string) string {
|
||||
parts := strings.Split(funcStr, ".")
|
||||
if len(parts) > 0 {
|
||||
return parts[len(parts)-1]
|
||||
} else {
|
||||
b = &bytes.Buffer{}
|
||||
return ""
|
||||
}
|
||||
}
|
||||
|
||||
timestamp := entry.Time.Format("2006-01-02 15:04:05")
|
||||
var newLog string
|
||||
|
||||
//HasCaller()为true才会有调用信息
|
||||
if entry.HasCaller() {
|
||||
fName := filepath.Base(entry.Caller.File)
|
||||
newLog = fmt.Sprintf("[%s] [%s] [%s:%d %s] %s\n",
|
||||
timestamp, entry.Level, fName, entry.Caller.Line, entry.Caller.Function, entry.Message)
|
||||
} else {
|
||||
newLog = fmt.Sprintf("[%s] [%s] %s\n", timestamp, entry.Level, entry.Message)
|
||||
}
|
||||
|
||||
b.WriteString(newLog)
|
||||
return b.Bytes(), nil
|
||||
func CallerFormatter(funcStr string, fileStr string) string {
|
||||
fName := filepath.Base(fileStr)
|
||||
println(fileStr, funcStr, fName)
|
||||
funcOut := getFuncOutStr(funcStr)
|
||||
return fmt.Sprintf(" [%s %s]", fName, funcOut)
|
||||
}
|
||||
|
||||
func Setup() {
|
||||
|
||||
formatter := new(prefixed.TextFormatter)
|
||||
formatter.DisableTimestamp = false
|
||||
formatter.ForceFormatting = false
|
||||
formatter.FullTimestamp = true
|
||||
formatter.CallerFormatter = CallerFormatter
|
||||
formatter.TimestampFormat = "2006-01-02 15:04:05.999"
|
||||
formatter.SetColorScheme(&prefixed.ColorScheme{
|
||||
TimestampStyle: "cyan",
|
||||
CallerStyle: "cyan",
|
||||
PrefixStyle: "green",
|
||||
})
|
||||
|
||||
Logger.Formatter = formatter
|
||||
Logger.SetReportCaller(true)
|
||||
Logger.SetFormatter(&MyFormatter{})
|
||||
Logger.SetOutput(os.Stdout)
|
||||
Logger.SetLevel(logrus.InfoLevel)
|
||||
|
||||
level := strings.ToLower(setting.AppSetting.LogLevel)
|
||||
switch level {
|
||||
case "debug":
|
||||
Logger.SetLevel(logrus.DebugLevel)
|
||||
case "info":
|
||||
Logger.SetLevel(logrus.InfoLevel)
|
||||
case "warn":
|
||||
Logger.SetLevel(logrus.WarnLevel)
|
||||
case "error":
|
||||
Logger.SetLevel(logrus.ErrorLevel)
|
||||
default:
|
||||
Logger.SetLevel(logrus.DebugLevel)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@ type App struct {
|
||||
JwtSecret string
|
||||
|
||||
RuntimeRootPath string
|
||||
LogLevel string
|
||||
}
|
||||
|
||||
var AppSetting = &App{}
|
||||
|
||||
Reference in New Issue
Block a user