1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- package logger
- import (
- rotatelogs "github.com/lestrrat-go/file-rotatelogs"
- "os"
- "path/filepath"
- "time"
- log "github.com/sirupsen/logrus"
- )
- var globalLogger *log.Logger
- // Initialize 初始化全局 Logger 实例。
- func Initialize(logPath string) error {
- // 创建日志目录
- if err := os.MkdirAll(filepath.Dir(logPath), os.ModePerm); err != nil {
- return err
- }
- // 使用 rotatelogs 进行日志轮转
- writer, err := rotatelogs.New(
- logPath+".%Y%m%d.log", // 文件名模式
- rotatelogs.WithMaxAge(3*24*time.Hour), // 最大保留时间3天
- rotatelogs.WithRotationTime(24*time.Hour), // 每天轮转一次
- rotatelogs.WithLinkName(logPath), // 符号链接指向最新日志文件
- rotatelogs.WithClock(rotatelogs.Local), // 使用本地时区
- )
- if err != nil {
- return err
- }
- // 设置日志格式为JSON
- formatter := &log.JSONFormatter{
- TimestampFormat: time.RFC3339,
- }
- // 创建一个新的 Logger 实例
- logger := log.New()
- logger.SetFormatter(formatter)
- logger.SetLevel(log.InfoLevel)
- logger.SetOutput(writer) // 设置输出到 rotatelogs 的 writer
- // 将全局变量设置为新创建的 Logger 实例
- globalLogger = logger
- return nil
- }
- // Get 获取全局 Logger 实例。
- func Get() *log.Logger {
- if globalLogger == nil {
- panic("Logger not initialized")
- }
- return globalLogger
- }
|