feat: Add configurable global log level via env

This commit is contained in:
begoniezhao
2026-02-04 19:18:35 +08:00
parent 4610a4d1ee
commit 10c2be0e6e
3 changed files with 32 additions and 6 deletions
+3
View File
@@ -11,6 +11,9 @@
# 可选值: debug(开发模式,有详细日志), release(生产模式,禁用Swagger文档)
GIN_MODE=release
# 日志级别,可选值:debug, info, warn, error, fatal,默认为debug
# LOG_LEVEL=debug
# 禁止新用户注册(生产环境建议设为 true)
DISABLE_REGISTRATION=false
+1
View File
@@ -38,6 +38,7 @@ services:
retries: 3
start_period: 60s
environment:
- LOG_LEVEL=${LOG_LEVEL:-}
- COS_SECRET_ID=${COS_SECRET_ID:-}
- COS_SECRET_KEY=${COS_SECRET_KEY:-}
- COS_REGION=${COS_REGION:-}
+28 -6
View File
@@ -3,6 +3,7 @@ package logger
import (
"context"
"fmt"
"os"
"path"
"runtime"
"sort"
@@ -126,6 +127,10 @@ func (f *CustomFormatter) Format(entry *logrus.Entry) ([]byte, error) {
// 初始化全局日志设置
func init() {
// 根据环境变量设置全局日志级别
logLevel := getLogLevelFromEnv()
logrus.SetLevel(logLevel)
// 设置日志格式而不修改全局时区
logrus.SetFormatter(&CustomFormatter{ForceColor: true})
logrus.SetReportCaller(false)
@@ -136,12 +141,8 @@ func GetLogger(c context.Context) *logrus.Entry {
if logger := c.Value(types.LoggerContextKey); logger != nil {
return logger.(*logrus.Entry)
}
newLogger := logrus.New()
newLogger.SetFormatter(&CustomFormatter{ForceColor: true})
// 设置默认日志级别
newLogger.SetLevel(logrus.DebugLevel)
// 启用调用者信息
return logrus.NewEntry(newLogger)
// 使用全局logrus实例,确保日志级别设置正确生效
return logrus.NewEntry(logrus.StandardLogger())
}
// SetLogLevel 设置日志级别
@@ -166,6 +167,27 @@ func SetLogLevel(level LogLevel) {
logrus.SetLevel(logLevel)
}
// getLogLevelFromEnv 从环境变量读取日志级别配置
func getLogLevelFromEnv() logrus.Level {
// 从环境变量读取LOG_LEVEL配置
logLevelStr := strings.ToLower(os.Getenv("LOG_LEVEL"))
switch logLevelStr {
case "debug":
return logrus.DebugLevel
case "info":
return logrus.InfoLevel
case "warn", "warning":
return logrus.WarnLevel
case "error":
return logrus.ErrorLevel
case "fatal":
return logrus.FatalLevel
default:
return logrus.DebugLevel // 无效配置时使用默认值
}
}
// 添加调用者字段
func addCaller(entry *logrus.Entry, skip int) *logrus.Entry {
pc, file, line, ok := runtime.Caller(skip)