mirror of
https://github.com/Tencent/WeKnora.git
synced 2026-09-19 02:18:25 +08:00
feat: Add configurable global log level via env
This commit is contained in:
@@ -11,6 +11,9 @@
|
||||
# 可选值: debug(开发模式,有详细日志), release(生产模式,禁用Swagger文档)
|
||||
GIN_MODE=release
|
||||
|
||||
# 日志级别,可选值:debug, info, warn, error, fatal,默认为debug
|
||||
# LOG_LEVEL=debug
|
||||
|
||||
# 禁止新用户注册(生产环境建议设为 true)
|
||||
DISABLE_REGISTRATION=false
|
||||
|
||||
|
||||
@@ -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:-}
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user