Files
AI-CS/backend/service/system_log_policy.go
T
2026-04-02 14:55:06 +08:00

96 lines
2.2 KiB
Go

package service
import (
"fmt"
"os"
"strings"
)
// 数据库落库最低级别(数值越大越严重)。低于 min 的日志不写 system_logs。
const (
logRankDebug = 0
logRankInfo = 1
logRankWarn = 2
logRankError = 3
logRankNone = -1 // 环境变量 none/off:全部不落库
)
func logLevelRank(level string) int {
switch strings.ToLower(strings.TrimSpace(level)) {
case "debug", "trace":
return logRankDebug
case "info":
return logRankInfo
case "warn", "warning":
return logRankWarn
case "error", "err", "fatal", "critical":
return logRankError
default:
return logRankInfo
}
}
// ParseSystemLogMinPersistLevel 解析 SYSTEM_LOG_MIN_LEVEL。
// debug|info|warn|error|none;空默认为 info;无法识别时回退为 info。
func ParseSystemLogMinPersistLevel(s string) int {
switch strings.ToLower(strings.TrimSpace(s)) {
case "", "info":
return logRankInfo
case "debug", "trace":
return logRankDebug
case "warn", "warning":
return logRankWarn
case "error", "err":
return logRankError
case "none", "off", "disable", "false", "0":
return logRankNone
default:
return logRankInfo
}
}
// ParseSystemLogMinPersistLevelStrict 用于 API:非法取值返回错误。
func ParseSystemLogMinPersistLevelStrict(s string) (int, error) {
v := strings.ToLower(strings.TrimSpace(s))
if v == "" {
return 0, fmt.Errorf("min_level 不能为空")
}
switch v {
case "debug", "trace":
return logRankDebug, nil
case "info":
return logRankInfo, nil
case "warn", "warning":
return logRankWarn, nil
case "error", "err":
return logRankError, nil
case "none", "off", "disable", "false", "0":
return logRankNone, nil
default:
return 0, fmt.Errorf("无效的 min_level,可选: debug, info, warn, error, none")
}
}
// SystemLogMinPersistLevelFromEnv 读取环境变量 SYSTEM_LOG_MIN_LEVEL。
func SystemLogMinPersistLevelFromEnv() int {
return ParseSystemLogMinPersistLevel(os.Getenv("SYSTEM_LOG_MIN_LEVEL"))
}
// SystemLogMinLevelLabel 用于启动日志说明。
func SystemLogMinLevelLabel(min int) string {
switch min {
case logRankDebug:
return "debug"
case logRankInfo:
return "info"
case logRankWarn:
return "warn"
case logRankError:
return "error"
case logRankNone:
return "none"
default:
return "info"
}
}