feat(log): 重构日志初始化逻辑并修复文件路径重复创建问题

- 将init函数重命名为Init以支持手动调用
- 添加filePath全局变量存储日志文件路径
- 在Init函数中检查日志文件是否存在,避免重复创建
- 在Info、Error、Warn、Debug函数中调用Init确保日志系统正确初始化
- 保持原有的日志格式化和颜色输出功能
main v1.0.1017
maguodong 2026-03-28 09:08:23 +08:00
parent 6805772746
commit ca82c166d0
2 changed files with 12 additions and 5 deletions

View File

@ -1 +0,0 @@
package log

View File

@ -18,6 +18,7 @@ import (
var (
logPath string
sysLog *log.Logger
filePath string
)
const (
@ -59,9 +60,12 @@ func (w *logWriter) Write(p []byte) (n int, err error) {
return len(p), nil
}
func init() {
func Init() {
logPath = gfile.Join(gfile.Pwd(), "logs")
filePath := gfile.Join(logPath, fmt.Sprintf("log-%s.log", gtime.Date()))
filePath = gfile.Join(logPath, fmt.Sprintf("log-%s.log", gtime.Date()))
if gfile.Exists(filePath) {
return
}
fileLogger := &lumberjack.Logger{
Filename: filePath,
MaxSize: 2, // 单个文件最大 10MB
@ -78,19 +82,23 @@ func init() {
}
func Info(v ...any) {
Init()
sysLog.SetPrefix(fmt.Sprintf("[%s] %s[INFO]%s ", time.Now().Format("2006-01-02 15:04:05"), Green, Reset))
sysLog.Println(fmt.Sprint(v...))
}
func Error(v ...any) {
Init()
sysLog.SetPrefix(fmt.Sprintf("[%s] %s[ERROR]%s ", time.Now().Format("2006-01-02 15:04:05"), Red, Reset))
msg := fmt.Sprint(v...)
sysLog.Println(msg, strings.TrimSpace(string(debug.Stack())))
}
func Warn(v ...any) {
Init()
sysLog.SetPrefix(fmt.Sprintf("[%s] %s[WARN]%s ", time.Now().Format("2006-01-02 15:04:05"), Yellow, Reset))
sysLog.Println(fmt.Sprint(v...))
}
func Debug(v ...any) {
Init()
sysLog.SetPrefix(fmt.Sprintf("[%s] %s[DEBUG]%s ", time.Now().Format("2006-01-02 15:04:05"), Blue, Reset))
sysLog.Println(fmt.Sprint(v...))
}