package logs import ( "bytes" "fmt" "io" "os" "path" "time" "github.com/sirupsen/logrus" ) var Log *logrus.Logger const ( red = 31 yellow = 33 blue = 36 gray = 37 ) type LogFormatter struct { } func (t LogFormatter) Format(entry *logrus.Entry) ([]byte, error) { //根据不同的level展示颜色 var levelColor int switch entry.Level { case logrus.DebugLevel, logrus.TraceLevel: levelColor = gray case logrus.WarnLevel: levelColor = yellow case logrus.ErrorLevel, logrus.FatalLevel, logrus.PanicLevel: levelColor = red default: levelColor = blue } //字节缓冲区 var b *bytes.Buffer if entry.Buffer != nil { b = entry.Buffer } else { b = &bytes.Buffer{} } //自定义日期格式 timestamp := entry.Time.Format("2006-01-02 15:04:06") if entry.HasCaller() { //自定义文件路径 //fmt.Println("自定义文件路径") funcVal := entry.Caller.Function fileVal := fmt.Sprintf("%s:%d", path.Base(entry.Caller.File), entry.Caller.Line) //自定义输出格式 fmt.Fprintf(b, "[%s] \033[%dm[%s]\033[0m %s %s %s \n", timestamp, levelColor, entry.Level, fileVal, funcVal, entry.Message) } else { fmt.Println(" else else自定义文件路径") fmt.Fprintf(b, "[%s] \033[%dm[%s]\033[0m %s %s %s \n", timestamp, levelColor, entry.Level, entry.Message) } return b.Bytes(), nil } func InitLogger() *logrus.Logger { // 定义logs文件夹的路径 logsDir := "./logs" // 尝试获取logs文件夹的信息 _, err := os.Stat(logsDir) if os.IsNotExist(err) { // 如果文件夹不存在,则创建它 err = os.MkdirAll(logsDir, 0755) if err != nil { // 处理创建文件夹时可能遇到的错误 fmt.Println("创建文件夹时出错:", err) } } mLog := logrus.New() //新建一个实例 currentTime := time.Now().Format("2006-01-02 15.04.06") logName := "./logs/xuguALL_" + currentTime + "txt" file, _ := os.OpenFile(logName, os.O_CREATE|os.O_RDWR|os.O_APPEND, 0755) mLog.SetOutput(io.MultiWriter(os.Stdout, file)) //设置输出类型 mLog.SetReportCaller(true) //开启返回函数名和行号 //mLog.SetFormatter(&logrus.JSONFormatter{})//设置自定义的Formatter mLog.SetFormatter(&LogFormatter{}) //设置自定义的Formatter mLog.SetLevel(logrus.DebugLevel) //设置最低等级 return mLog }