From 8d4baf6141542e57be73e2fd9f13da710384a96e Mon Sep 17 00:00:00 2001 From: Shine Date: Wed, 28 May 2025 15:51:10 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E9=80=9A=E8=BF=87=E7=8E=AF=E5=A2=83=E5=8F=98=E9=87=8F=20`LOG?= =?UTF-8?q?=5FLEVEL`=20=E6=8E=A7=E5=88=B6=E8=BE=93=E5=87=BA=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E7=AD=89=E7=BA=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/config/config.go | 2 ++ common/logger/logger.go | 29 +++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/common/config/config.go b/common/config/config.go index a235a8df..2df063b8 100644 --- a/common/config/config.go +++ b/common/config/config.go @@ -158,6 +158,8 @@ var GeminiVersion = env.String("GEMINI_VERSION", "v1") var OnlyOneLogFile = env.Bool("ONLY_ONE_LOG_FILE", false) +var LogLevel = env.String("LOG_LEVEL", "INFO") + var RelayProxy = env.String("RELAY_PROXY", "") var UserContentRequestProxy = env.String("USER_CONTENT_REQUEST_PROXY", "") var UserContentRequestTimeout = env.Int("USER_CONTENT_REQUEST_TIMEOUT", 30) diff --git a/common/logger/logger.go b/common/logger/logger.go index 724bc029..b9d504aa 100644 --- a/common/logger/logger.go +++ b/common/logger/logger.go @@ -28,6 +28,30 @@ const ( loggerFatal loggerLevel = "FATAL" ) +// logLevel priority: DEBUG < INFO < WARN < ERROR < FATAL +func getLevelPriority(level loggerLevel) int { + switch level { + case loggerDEBUG: + return 0 + case loggerINFO: + return 1 + case loggerWarn: + return 2 + case loggerError: + return 3 + case loggerFatal: + return 4 + default: + return 1 // 默认为 INFO 级别 + } +} + +// shouldLog 检查是否应该输出该等级的日志 +func shouldLog(level loggerLevel) bool { + configLevel := loggerLevel(strings.ToUpper(config.LogLevel)) + return getLevelPriority(level) >= getLevelPriority(configLevel) +} + var setupLogOnce sync.Once func SetupLogger() { @@ -120,6 +144,11 @@ func FatalLogf(format string, a ...any) { } func logHelper(ctx context.Context, level loggerLevel, msg string) { + // 检查是否应该输出该等级的日志 + if !shouldLog(level) { + return + } + writer := gin.DefaultErrorWriter if level == loggerINFO { writer = gin.DefaultWriter