1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- 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
- }
|