-
Notifications
You must be signed in to change notification settings - Fork 0
/
config.go
78 lines (61 loc) · 1.38 KB
/
config.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
package lognile
import "os"
import "fmt"
import "log"
import "path/filepath"
import "gopkg.in/yaml.v3"
type Config struct {
db string
patterns map[string][]string
}
func (C *Config) Init(cfg string) *Config {
content, err := os.ReadFile(cfg)
if err != nil {
log.Fatal("配置文件读取失败:", err)
}
data := make(map[string]any)
err = yaml.Unmarshal(content, &data)
if err != nil {
log.Fatal("配置文件解析失败:", err)
}
if v, ok := data["db"];ok {
C.db = v.(string)
} else {
C.db = "lognile.db"
}
pattern, ok := data["pattern"]
if !ok {
panic("没有配置日志监听路径")
}
C.parse(pattern)
return C
}
func (C *Config) Db() string {
if C.db=="" {
panic("未执行初始化方法")
}
return C.db
}
func (C *Config) Pattern() map[string][]string {
if C.patterns==nil {
panic("未执行初始化方法")
}
return C.patterns
}
func (C *Config) parse(pattern any) {
C.patterns = map[string][]string{}
for _, p := range pattern.([]any) {
abs, err := filepath.Abs(p.(string))
if err!=nil {
fmt.Fprintf(os.Stderr, "文件路径转绝对路径失败,file:"+p.(string)+",error:"+err.Error())
continue
}
dir := filepath.Dir(abs)
base := filepath.Base(abs)
if _, ok := C.patterns[dir];ok {
C.patterns[dir] = append(C.patterns[dir], base)
} else {
C.patterns[dir] = []string{base}
}
}
}