开放接口增加详细调试日志,并支持控制台与文件双写
- OPEN_API_DEBUG 记录鉴权、查单、推送业务字段与 req_id - LOG_FILE 默认 logs/app.log,标准日志/Gin/GORM 同时输出控制台与文件
This commit is contained in:
@@ -4,6 +4,7 @@ import (
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"github.com/joho/godotenv"
|
||||
)
|
||||
@@ -19,19 +20,43 @@ type Config struct {
|
||||
OpenAPISecret string
|
||||
// OpenSignSkew 签名时间戳允许偏差(秒)
|
||||
OpenSignSkew int64
|
||||
// OpenAPIDebug 开放接口详细调试日志
|
||||
OpenAPIDebug bool
|
||||
// LogFile 日志文件路径;非空时同时写控制台与文件
|
||||
LogFile string
|
||||
}
|
||||
|
||||
// Load 加载配置:先尝试读取 .env,再读系统环境变量(已存在的系统环境变量优先级更高)
|
||||
func Load() *Config {
|
||||
loadDotEnv()
|
||||
mode := getEnv("GIN_MODE", "debug")
|
||||
// OPEN_API_DEBUG 优先;未设置时 debug 模式默认开启
|
||||
debugOpen := getEnvBool("OPEN_API_DEBUG", mode == "debug" || mode == "")
|
||||
return &Config{
|
||||
Port: getEnv("PORT", "8080"),
|
||||
JWTSecret: getEnv("JWT_SECRET", "affiliate-dash-dev-secret-change-me"),
|
||||
DBPath: getEnv("DB_PATH", "data/app.db"),
|
||||
Mode: getEnv("GIN_MODE", "debug"),
|
||||
Mode: mode,
|
||||
OpenAPIKey: getEnv("OPEN_API_KEY", "sk_source_dev_key_change_me"),
|
||||
OpenAPISecret: getEnv("OPEN_API_SECRET", "sk_source_dev_secret_change_me"),
|
||||
OpenSignSkew: int64(getEnvInt("OPEN_SIGN_SKEW", 300)),
|
||||
OpenAPIDebug: debugOpen,
|
||||
LogFile: getEnv("LOG_FILE", "logs/app.log"),
|
||||
}
|
||||
}
|
||||
|
||||
func getEnvBool(key string, def bool) bool {
|
||||
v := os.Getenv(key)
|
||||
if v == "" {
|
||||
return def
|
||||
}
|
||||
switch strings.ToLower(strings.TrimSpace(v)) {
|
||||
case "1", "true", "yes", "on":
|
||||
return true
|
||||
case "0", "false", "no", "off":
|
||||
return false
|
||||
default:
|
||||
return def
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user