feat(log): 添加日志系统功能
- 集成 lumberjack.v2 库实现日志轮转功能 - 创建 log 包并实现基础日志记录器 - 实现 Info、Error、Warn、Debug 四种日志级别方法 - 配置日志文件大小限制为 1MB 和保留策略 - 实现日志同时输出到文件和终端的功能 - 添加错误日志的堆栈跟踪信息记录main v1.0.1003
parent
964d311247
commit
22a6f33af2
1
go.mod
1
go.mod
|
|
@ -13,6 +13,7 @@ require (
|
|||
github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646
|
||||
github.com/xuri/excelize/v2 v2.9.1
|
||||
google.golang.org/grpc v1.76.0
|
||||
gopkg.in/natefinch/lumberjack.v2 v2.2.1
|
||||
gorm.io/driver/mysql v1.6.0
|
||||
gorm.io/gorm v1.31.1
|
||||
)
|
||||
|
|
|
|||
2
go.sum
2
go.sum
|
|
@ -204,6 +204,8 @@ gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8
|
|||
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
|
||||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
|
||||
gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc=
|
||||
gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc=
|
||||
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
|
||||
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
|
||||
|
|
|
|||
|
|
@ -0,0 +1 @@
|
|||
package log
|
||||
|
|
@ -0,0 +1,59 @@
|
|||
package log
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io"
|
||||
"log"
|
||||
"os"
|
||||
"runtime/debug"
|
||||
"strings"
|
||||
|
||||
"github.com/gogf/gf/v2/os/gfile"
|
||||
"github.com/gogf/gf/v2/os/gtime"
|
||||
"gopkg.in/natefinch/lumberjack.v2"
|
||||
)
|
||||
|
||||
var (
|
||||
logPath string
|
||||
sysLog *log.Logger
|
||||
)
|
||||
|
||||
func init() {
|
||||
logPath = gfile.Join(gfile.Pwd(), "logs")
|
||||
filePath := gfile.Join(logPath, fmt.Sprintf("log-%s.log", gtime.Date()))
|
||||
fileLogger := &lumberjack.Logger{
|
||||
Filename: filePath,
|
||||
MaxSize: 1, // 单个文件最大 10MB
|
||||
MaxBackups: 5, // 最多保留 5 个备份
|
||||
MaxAge: 30, // 保留 30 天
|
||||
Compress: false, // 启用压缩
|
||||
}
|
||||
// 创建 MultiWriter 实现同时输出到文件和终端
|
||||
multiWriter := io.MultiWriter(fileLogger, os.Stdout)
|
||||
sysLog = log.New(multiWriter, "", log.LstdFlags)
|
||||
}
|
||||
|
||||
// Info 打印普通信息日志
|
||||
func Info(v ...any) {
|
||||
sysLog.SetPrefix("[INFO] ")
|
||||
sysLog.Println(fmt.Sprint(v...))
|
||||
}
|
||||
|
||||
// Error 打印错误日志
|
||||
func Error(v ...any) {
|
||||
sysLog.SetPrefix("[ERROR] ")
|
||||
msg := fmt.Sprint(v...)
|
||||
sysLog.Println(msg, strings.TrimSpace(string(debug.Stack())))
|
||||
}
|
||||
|
||||
// Warn 打印警告日志
|
||||
func Warn(v ...any) {
|
||||
sysLog.SetPrefix("[WARN] ")
|
||||
sysLog.Println(fmt.Sprint(v...))
|
||||
}
|
||||
|
||||
// Debug 打印调试日志
|
||||
func Debug(v ...any) {
|
||||
sysLog.SetPrefix("[DEBUG] ")
|
||||
sysLog.Println(fmt.Sprint(v...))
|
||||
}
|
||||
Loading…
Reference in New Issue