Files
TaskPool/agent/logger.go
T
2025-12-30 22:25:15 +08:00

70 lines
1.4 KiB
Go

package main
import (
"fmt"
"io"
"os"
"path/filepath"
"strings"
"github.com/sirupsen/logrus"
"gopkg.in/natefinch/lumberjack.v2"
)
// 日志实例
var log = logrus.New()
// CustomFormatter 自定义日志格式
type CustomFormatter struct{}
// ANSI 颜色代码
const (
colorReset = "\033[0m"
colorRed = "\033[31m"
colorYellow = "\033[33m"
colorBlue = "\033[36m"
colorGray = "\033[37m"
)
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())
var levelColor string
switch entry.Level {
case logrus.DebugLevel, logrus.TraceLevel:
levelColor = colorGray
case logrus.InfoLevel:
levelColor = colorBlue
case logrus.WarnLevel:
levelColor = colorYellow
case logrus.ErrorLevel, logrus.FatalLevel, logrus.PanicLevel:
levelColor = colorRed
default:
levelColor = colorBlue
}
msg := fmt.Sprintf("[%s]%s[%s]%s %s\n", timestamp, levelColor, level, colorReset, entry.Message)
return []byte(msg), nil
}
func initLogger(logFile string) {
logDir := filepath.Dir(logFile)
if logDir != "" && logDir != "." {
os.MkdirAll(logDir, 0755)
}
log.SetFormatter(&CustomFormatter{})
log.SetLevel(logrus.InfoLevel)
lumberjackLogger := &lumberjack.Logger{
Filename: logFile,
MaxSize: 5,
MaxBackups: 3,
MaxAge: 0,
Compress: false,
}
log.SetOutput(io.MultiWriter(os.Stdout, lumberjackLogger))
}