-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathconf.go
104 lines (89 loc) · 2.15 KB
/
conf.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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
package log4g
import (
"encoding/json"
"io/ioutil"
"os"
"strings"
)
var (
gEnv string
gFile string
defaultConfigFilepath = []string{"log4g.json", "conf/log4g.json", "config/log4g.json"}
)
type loggerConfig struct {
Disabled bool `json:"disabled"`
Prefix string `json:"prefix"`
Level string `json:"level"`
Flag string `json:"flag"`
Output string `json:"output"`
Buffer bool `json:"buffer"`
Filename string `json:"filename"`
Maxsize int64 `json:"maxsize"`
MaxLines int `json:"max_lines"`
MaxCount int `json:"max_count"`
Daily bool `json:"daily"`
Address string `json:"address"`
DB int `json:"db"`
Password string `json:"password"`
RedisType string `json:"redis_type"`
RedisKey string `json:"redis_key"`
Network string `json:"network"`
Codec string `json:"codec"`
JsonKey string `json:"json_key"`
JsonExt string `json:"json_ext"`
}
func NewConfig() *Config {
c := new(Config)
c.initDefault()
return c
}
type Config struct {
Prefix string `json:"prefix"`
Level string `json:"level"`
Flag string `json:"flag"`
Items []*loggerConfig `json:"items"`
}
func (c *Config) initDefault() {
// default
c.Level = LEVEL_DEBUG.Name()
c.Flag = "date|time|shortfile"
}
func setEnv(env string) {
gEnv = env
//loadDefaultConfig()
}
func loadConfig(filepath string, mapping interface{}) error {
config := mapping.(*Config)
// load form Config file
_, err := os.Stat(filepath)
if err == nil { //file exist
data, err := ioutil.ReadFile(filepath)
if err != nil {
return err
}
err = json.Unmarshal(data, config)
if err != nil {
return err
}
}
return err
}
func parseFlag(strFlag string) int {
flags := strings.Split(strFlag, "|")
flag := 0
for _, name := range flags {
flag = flag | getFlagByName(name)
}
return flag
}
func getFlagByName(name string) int {
flags := make(map[string]int)
flags["date"] = Ldate
flags["time"] = Ltime
flags["microseconds"] = Lmicroseconds
flags["longfile"] = Llongfile
flags["shortfile"] = Lshortfile
flags["UTC"] = LUTC
flags["stdFlags"] = LstdFlags
return flags[name]
}