| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- package utils
- import (
- "io"
- "os"
- "path/filepath"
- "strings"
- "time"
- "github.com/natefinch/lumberjack"
- "github.com/sirupsen/logrus"
- )
- var Logger *logrus.Logger
- func InitLogger(logDir string, levelConf string) {
- Logger = logrus.New()
- // --- 目录准备(和之前一样) ---
- cwd, err := os.Getwd()
- if err != nil {
- panic(err)
- }
- fullLogDir := filepath.Join(cwd, logDir)
- if err := os.MkdirAll(fullLogDir, 0755); err != nil {
- panic(err)
- }
- // --- 滚动文件 + stdout ---
- currentDate := time.Now().Format("20060102")
- fileWriter := &lumberjack.Logger{
- Filename: filepath.Join(fullLogDir, "policy-service-"+currentDate+".log"),
- MaxSize: 100,
- MaxBackups: 30,
- MaxAge: 30,
- Compress: true,
- LocalTime: true,
- }
- mw := io.MultiWriter(fileWriter, os.Stdout)
- Logger.SetOutput(mw)
- Logger.SetFormatter(&logrus.JSONFormatter{
- TimestampFormat: time.RFC3339,
- })
- // --- 解析环境变量里的多个级别 ---
- if levelConf == "" {
- levelConf = "info"
- }
- levelStrs := strings.Split(levelConf, ",")
- var desired []logrus.Level
- for _, s := range levelStrs {
- if lvl, err := logrus.ParseLevel(strings.TrimSpace(s)); err == nil {
- desired = append(desired, lvl)
- } else {
- Logger.Warnf("忽略无效日志级别:%q", s)
- }
- }
- if len(desired) == 0 {
- desired = []logrus.Level{logrus.InfoLevel}
- }
- // --- 在 desired 里找到“数值最大的那个”(也就是最低阈值) ---
- threshold := desired[0]
- for _, lvl := range desired[1:] {
- if lvl > threshold {
- threshold = lvl
- }
- }
- Logger.SetLevel(threshold)
- Logger.Infof("日志阈值已设置为 %s", threshold.String())
- }
|