package config import ( "fmt" "github.com/sirupsen/logrus" "os" "path/filepath" "strings" ) func LogSetup(mode, lvl string) { l, err := logrus.ParseLevel(lvl) if err != nil { l = logrus.InfoLevel } logrus.SetLevel(l) switch mode { case "release": case "dev": { logrus.SetReportCaller(true) logrus.SetFormatter(&CustomFormatter{}) logrus.SetOutput(os.Stdout) } } } type CustomFormatter struct{} func (f *CustomFormatter) Format(entry *logrus.Entry) ([]byte, error) { timestamp := entry.Time.Format("2006-01-02 15:04:05") level := strings.ToUpper(entry.Level.String()) msg := entry.Message file := "" line := 0 if entry.Caller != nil { file = filepath.Base(entry.Caller.File) line = entry.Caller.Line } logLine := fmt.Sprintf("[%s][%s][%s:%d] %s\n", level, timestamp, file, line, msg) return []byte(logLine), nil }