| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- package utils
- import (
- "os"
- "path/filepath"
- "strings"
- "github.com/natefinch/lumberjack"
- "github.com/sirupsen/logrus"
- )
- var Logger *logrus.Logger
- func InitLogger(logDir string, levelConf string) {
- Logger = logrus.New()
- // 获取项目根目录路径
- projectRoot, err := os.Getwd()
- if err != nil {
- panic(err)
- }
- // 组合日志目录路径
- logPath := filepath.Join(projectRoot, logDir)
- // 确保日志目录存在
- if err := os.MkdirAll(logPath, 0755); err != nil {
- panic(err)
- }
- logFile := filepath.Join(logPath, "policy-service.log")
- // 配置日志切割
- lumberjackLogger := &lumberjack.Logger{
- Filename: logFile,
- MaxSize: 100, // 每个日志文件最大100MB
- MaxBackups: 30, // 保留30个旧日志文件
- MaxAge: 30, // 保留30天
- Compress: true, // 压缩旧日志
- LocalTime: true, // 使用本地时间切割
- }
- Logger.SetOutput(lumberjackLogger)
- Logger.SetFormatter(&logrus.JSONFormatter{})
- // 从环境变量获取日志级别,默认为info
- if levelConf == "" {
- levelConf = "info"
- }
- // 分割多个级别
- levelStrs := strings.Split(levelConf, ",")
- var levels []logrus.Level
- for _, lvlStr := range levelStrs {
- level, err := logrus.ParseLevel(strings.TrimSpace(lvlStr))
- if err != nil {
- Logger.Warnf("无效的日志级别%s,跳过", lvlStr)
- continue
- }
- levels = append(levels, level)
- }
- if len(levels) == 0 {
- levels = []logrus.Level{logrus.InfoLevel} // 默认级别
- }
- }
|