Skip to content

Commit 10c2be0

Browse files
committed
feat: Add configurable global log level via env
1 parent 4610a4d commit 10c2be0

File tree

3 files changed

+32
-6
lines changed

3 files changed

+32
-6
lines changed

.env.example

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@
1111
# 可选值: debug(开发模式,有详细日志), release(生产模式,禁用Swagger文档)
1212
GIN_MODE=release
1313

14+
# 日志级别,可选值:debug, info, warn, error, fatal,默认为debug
15+
# LOG_LEVEL=debug
16+
1417
# 禁止新用户注册(生产环境建议设为 true)
1518
DISABLE_REGISTRATION=false
1619

docker-compose.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ services:
3838
retries: 3
3939
start_period: 60s
4040
environment:
41+
- LOG_LEVEL=${LOG_LEVEL:-}
4142
- COS_SECRET_ID=${COS_SECRET_ID:-}
4243
- COS_SECRET_KEY=${COS_SECRET_KEY:-}
4344
- COS_REGION=${COS_REGION:-}

internal/logger/logger.go

Lines changed: 28 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package logger
33
import (
44
"context"
55
"fmt"
6+
"os"
67
"path"
78
"runtime"
89
"sort"
@@ -126,6 +127,10 @@ func (f *CustomFormatter) Format(entry *logrus.Entry) ([]byte, error) {
126127

127128
// 初始化全局日志设置
128129
func init() {
130+
// 根据环境变量设置全局日志级别
131+
logLevel := getLogLevelFromEnv()
132+
logrus.SetLevel(logLevel)
133+
129134
// 设置日志格式而不修改全局时区
130135
logrus.SetFormatter(&CustomFormatter{ForceColor: true})
131136
logrus.SetReportCaller(false)
@@ -136,12 +141,8 @@ func GetLogger(c context.Context) *logrus.Entry {
136141
if logger := c.Value(types.LoggerContextKey); logger != nil {
137142
return logger.(*logrus.Entry)
138143
}
139-
newLogger := logrus.New()
140-
newLogger.SetFormatter(&CustomFormatter{ForceColor: true})
141-
// 设置默认日志级别
142-
newLogger.SetLevel(logrus.DebugLevel)
143-
// 启用调用者信息
144-
return logrus.NewEntry(newLogger)
144+
// 使用全局logrus实例,确保日志级别设置正确生效
145+
return logrus.NewEntry(logrus.StandardLogger())
145146
}
146147

147148
// SetLogLevel 设置日志级别
@@ -166,6 +167,27 @@ func SetLogLevel(level LogLevel) {
166167
logrus.SetLevel(logLevel)
167168
}
168169

170+
// getLogLevelFromEnv 从环境变量读取日志级别配置
171+
func getLogLevelFromEnv() logrus.Level {
172+
// 从环境变量读取LOG_LEVEL配置
173+
logLevelStr := strings.ToLower(os.Getenv("LOG_LEVEL"))
174+
175+
switch logLevelStr {
176+
case "debug":
177+
return logrus.DebugLevel
178+
case "info":
179+
return logrus.InfoLevel
180+
case "warn", "warning":
181+
return logrus.WarnLevel
182+
case "error":
183+
return logrus.ErrorLevel
184+
case "fatal":
185+
return logrus.FatalLevel
186+
default:
187+
return logrus.DebugLevel // 无效配置时使用默认值
188+
}
189+
}
190+
169191
// 添加调用者字段
170192
func addCaller(entry *logrus.Entry, skip int) *logrus.Entry {
171193
pc, file, line, ok := runtime.Caller(skip)

0 commit comments

Comments
 (0)