| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- 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"
- }
- }
|