From 209bffb6f624456fba76b4b26da94f05aa50c5bd Mon Sep 17 00:00:00 2001 From: vipg Date: Tue, 11 Nov 2025 16:21:30 +0800 Subject: [PATCH] add --- backend/user/src/logger/logger.go | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/backend/user/src/logger/logger.go b/backend/user/src/logger/logger.go index 17dc4a4..4222c19 100644 --- a/backend/user/src/logger/logger.go +++ b/backend/user/src/logger/logger.go @@ -1,6 +1,7 @@ package logger import ( + "log" "os" "time" @@ -10,6 +11,19 @@ import ( "gopkg.in/natefinch/lumberjack.v2" ) +var shanghaiLoc *time.Location + +func init() { + var err error + // 提前初始化时区并处理错误 + shanghaiLoc, err = time.LoadLocation("Asia/Shanghai") + if err != nil { + // 若加载失败,使用UTC作为 fallback + shanghaiLoc = time.UTC + log.Printf("警告:加载Asia/Shanghai时区失败,将使用UTC时区: %v", err) + } +} + // Init 初始化日志(依赖配置文件已加载) func Init() { // 日志级别转换 @@ -60,11 +74,10 @@ func Init() { zap.L().Info("✅ 日志初始化成功", zap.String("level", level.String())) } -// customTimeEncoder 自定义时间格式(强制东八区) +// customTimeEncoder 自定义时间格式(强制东八区,若加载失败则使用UTC) func customTimeEncoder(t time.Time, enc zapcore.PrimitiveArrayEncoder) { - // 转换为东八区(UTC+8)时间 - loc, _ := time.LoadLocation("Asia/Shanghai") - beijingTime := t.In(loc) + // 使用提前初始化好的时区,避免每次调用都加载 + beijingTime := t.In(shanghaiLoc) // 格式化输出 enc.AppendString(beijingTime.Format("2006-01-02 15:04:05.000")) -} +} \ No newline at end of file