Skip to content

Commit e402888

Browse files
committed
feat(redis): dns reload log split #16418
1 parent 54cb208 commit e402888

File tree

5 files changed

+96
-14
lines changed

5 files changed

+96
-14
lines changed

dbm-services/common/db-dns/dns-reload/config/config.conf

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
1-
info_log_path="../log/info.log"
2-
error_log_path="../log/err.log"
1+
# 日志路径
2+
error_log_path = ./logs/error.log
3+
info_log_path = ./logs/info.log
4+
5+
# lumberjack 配置(可选,不配置则使用默认值)
6+
log_max_size = 100 # 单个文件最大 100MB
7+
log_max_backups = 5 # 保留 5 个备份
8+
log_max_age = 7 # 保留 7 天
9+
log_compress = true # 压缩旧文件
10+
log_to_console = false # 同时输出到控制台
311

412
db_cloud_token=""
513
bk_dns_api_url=""

dbm-services/common/db-dns/dns-reload/config/init.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ func InitConfig(configFile string) {
2727
if err == io.EOF {
2828
break
2929
}
30-
log.Fatalln("read config error ")
30+
log.Printf("read config error ")
3131
os.Exit(2)
3232
}
3333
s := strings.TrimSpace(strings.ReplaceAll(string(b), "\"", ""))
@@ -51,8 +51,8 @@ func InitConfig(configFile string) {
5151
func GetConfig(k string) string {
5252
v, _ok := ConfigMap[k]
5353
if !_ok {
54-
log.Fatalln(" unknown parameter %s in config ", k)
55-
os.Exit(2)
54+
log.Printf(" unknown parameter %s in config.", k)
55+
return ""
5656
}
5757

5858
return v
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
11
module dnsReload
22

33
go 1.19
4+
5+
require gopkg.in/natefinch/lumberjack.v2 v2.2.1
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
gopkg.in/natefinch/lumberjack.v2 v2.2.1 h1:bBRl1b0OH9s/DuPhuXpNl+VtCaJXFZ5/uEFST95x9zc=
2+
gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYskCTPBJVb9jqSc=

dbm-services/common/db-dns/dns-reload/logger/init.go

Lines changed: 79 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,37 +6,107 @@ import (
66
"io/ioutil"
77
"log"
88
"os"
9+
"path/filepath"
10+
"strconv"
11+
12+
"gopkg.in/natefinch/lumberjack.v2"
913
)
1014

11-
// 初始化日志
1215
var (
1316
Trace *log.Logger
1417
Info *log.Logger
1518
Warning *log.Logger
1619
Error *log.Logger
1720
)
1821

19-
// InitLogger TODO
22+
// getConfigSafe 安全获取配置,不存在返回默认值
23+
func getConfigSafe(key, defaultVal string) string {
24+
val := config.GetConfig(key)
25+
if val == "" || val == key { // 有些配置系统找不到会返回key本身
26+
return defaultVal
27+
}
28+
return val
29+
}
30+
31+
// parseIntSafe 安全解析整数
32+
func parseIntSafe(s string, defaultVal int) int {
33+
if i, err := strconv.Atoi(s); err == nil {
34+
return i
35+
}
36+
return defaultVal
37+
}
38+
39+
// parseBoolSafe 安全解析布尔值
40+
func parseBoolSafe(s string, defaultVal bool) bool {
41+
if b, err := strconv.ParseBool(s); err == nil {
42+
return b
43+
}
44+
return defaultVal
45+
}
46+
47+
// InitLogger 初始化带轮转的日志
2048
func InitLogger() {
21-
errFile, err := os.OpenFile(config.GetConfig("error_log_path"),
22-
os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
23-
if err != nil {
24-
log.Fatalln("Failed to open error log file:", err)
49+
errorLogPath := config.GetConfig("error_log_path")
50+
infoLogPath := config.GetConfig("info_log_path")
51+
52+
// 确保日志目录存在
53+
for _, path := range []string{errorLogPath, infoLogPath} {
54+
if dir := filepath.Dir(path); dir != "." {
55+
if err := os.MkdirAll(dir, 0755); err != nil {
56+
log.Fatalf("创建日志目录 %s 失败: %v", dir, err)
57+
}
58+
}
59+
}
60+
61+
// 读取配置(不存在则使用默认值,不会报错)
62+
maxSize := parseIntSafe(getConfigSafe("log_max_size", "100"), 100)
63+
maxBackups := parseIntSafe(getConfigSafe("log_max_backups", "10"), 10)
64+
maxAge := parseIntSafe(getConfigSafe("log_max_age", "7"), 7)
65+
compress := parseBoolSafe(getConfigSafe("log_compress", "true"), true)
66+
toConsole := parseBoolSafe(getConfigSafe("log_to_console", "false"), false)
67+
68+
// 创建写入器
69+
errorWriter := &lumberjack.Logger{
70+
Filename: errorLogPath,
71+
MaxSize: maxSize,
72+
MaxBackups: maxBackups,
73+
MaxAge: maxAge,
74+
Compress: compress,
75+
LocalTime: true,
76+
}
77+
78+
infoWriter := &lumberjack.Logger{
79+
Filename: infoLogPath,
80+
MaxSize: maxSize,
81+
MaxBackups: maxBackups,
82+
MaxAge: maxAge,
83+
Compress: compress,
84+
LocalTime: true,
85+
}
86+
87+
// 构建输出目标
88+
var errorDest io.Writer = errorWriter
89+
var infoDest io.Writer = infoWriter
90+
91+
if toConsole {
92+
errorDest = io.MultiWriter(errorWriter, os.Stderr)
93+
infoDest = io.MultiWriter(infoWriter, os.Stdout)
2594
}
2695

96+
// 初始化日志
2797
Trace = log.New(ioutil.Discard,
2898
"TRACE: ",
2999
log.Ldate|log.Ltime|log.Lshortfile)
30100

31-
Info = log.New(os.Stdout,
101+
Info = log.New(infoDest,
32102
"INFO: ",
33103
log.Ldate|log.Ltime|log.Lshortfile)
34104

35-
Warning = log.New(os.Stdout,
105+
Warning = log.New(infoDest,
36106
"WARNING: ",
37107
log.Ldate|log.Ltime|log.Lshortfile)
38108

39-
Error = log.New(io.MultiWriter(errFile),
109+
Error = log.New(errorDest,
40110
"ERROR: ",
41111
log.Ldate|log.Ltime|log.Lshortfile)
42112
}

0 commit comments

Comments
 (0)