refactor: 添加 logger 模块并优化客户端实例清理逻辑
- 新增 logger 模块,统一使用 zap.SugaredLogger - 将 config_api.go 中的 fmt.Printf 改为 logger.SugaredLogger.Errorf - 客户端实例清理逻辑改为定时任务(每分钟执行) - 清理条件改为 last_ping_at 超过 5 分钟
This commit is contained in:
@@ -1,8 +1,8 @@
|
||||
package handler
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"kenaito-conf/server/internal/dao"
|
||||
"kenaito-conf/server/internal/logger"
|
||||
"kenaito-conf/server/internal/model"
|
||||
"kenaito-conf/server/internal/service"
|
||||
"net/http"
|
||||
@@ -242,14 +242,11 @@ func (h *ConfigApiHandler) recordClientInstances(ip string, configIds []int, app
|
||||
}
|
||||
_, err := dao.Engine.Insert(&instance)
|
||||
if err != nil {
|
||||
fmt.Printf("[recordClientInstances] insert error: %v\n", err)
|
||||
logger.SugaredLogger.Errorf("[recordClientInstances] insert error: %v", err)
|
||||
continue
|
||||
}
|
||||
}
|
||||
}
|
||||
// cleanup records older than 5 minutes
|
||||
fiveMinutesAgo := now.Add(-5 * time.Minute)
|
||||
dao.Engine.Where("last_ping_at < ?", fiveMinutesAgo).Delete(&model.ClientInstance{})
|
||||
}
|
||||
|
||||
// func (h *ConfigApiHandler) Ping(c *gin.Context) {
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
package logger
|
||||
|
||||
import (
|
||||
"os"
|
||||
"time"
|
||||
|
||||
"go.uber.org/zap"
|
||||
"go.uber.org/zap/zapcore"
|
||||
"gopkg.in/natefinch/lumberjack.v2"
|
||||
)
|
||||
|
||||
var globalLogger *zap.Logger
|
||||
|
||||
// SugaredLogger 全局 SugaredLogger,任意位置可直接使用
|
||||
var SugaredLogger *zap.SugaredLogger
|
||||
|
||||
// 初始化全局日志(控制台 + application.log 轮转文件)
|
||||
func init() {
|
||||
encoderConfig := zapcore.EncoderConfig{
|
||||
TimeKey: "time",
|
||||
LevelKey: "level",
|
||||
NameKey: "logger",
|
||||
CallerKey: "caller",
|
||||
MessageKey: "msg",
|
||||
StacktraceKey: "stack",
|
||||
LineEnding: zapcore.DefaultLineEnding,
|
||||
EncodeLevel: zapcore.CapitalColorLevelEncoder,
|
||||
EncodeTime: func(t time.Time, enc zapcore.PrimitiveArrayEncoder) {
|
||||
enc.AppendString(t.Format("2006-01-02 15:04:05"))
|
||||
},
|
||||
EncodeDuration: zapcore.StringDurationEncoder,
|
||||
EncodeCaller: zapcore.ShortCallerEncoder,
|
||||
}
|
||||
|
||||
// 日志轮转配置
|
||||
lumberjackLogger := &lumberjack.Logger{
|
||||
Filename: "application.log",
|
||||
MaxSize: 100, // 每个日志文件最大 100MB
|
||||
MaxBackups: 5, // 最多保留 5 个旧日志文件
|
||||
MaxAge: 30, // 日志文件最多保留 30 天
|
||||
Compress: true, // 压缩旧日志
|
||||
}
|
||||
|
||||
// 同时输出到控制台和文件
|
||||
consoleEncoder := zapcore.NewConsoleEncoder(encoderConfig)
|
||||
consoleWriter := zapcore.AddSync(os.Stdout)
|
||||
fileWriter := zapcore.AddSync(lumberjackLogger)
|
||||
|
||||
core := zapcore.NewTee(
|
||||
zapcore.NewCore(consoleEncoder, consoleWriter, zap.InfoLevel),
|
||||
zapcore.NewCore(consoleEncoder, fileWriter, zap.InfoLevel),
|
||||
)
|
||||
|
||||
globalLogger = zap.New(core, zap.AddCaller(), zap.AddStacktrace(zap.ErrorLevel))
|
||||
SugaredLogger = globalLogger.Sugar()
|
||||
zap.ReplaceGlobals(globalLogger)
|
||||
}
|
||||
Reference in New Issue
Block a user