-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathinit.go
125 lines (108 loc) · 2.91 KB
/
init.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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
package hfw
import (
"errors"
"fmt"
"path/filepath"
"strings"
"testing"
logger "github.com/hsyan2008/go-logger"
"github.com/hsyan2008/hfw/common"
"github.com/hsyan2008/hfw/configs"
"github.com/hsyan2008/hfw/db"
"github.com/hsyan2008/hfw/prometheus"
"github.com/hsyan2008/hfw/redis"
"github.com/prometheus/client_golang/prometheus/promhttp"
)
var (
//废弃,请用configs.Config
Config configs.AllConfig
isInited bool
)
func init() {
Init()
}
func Init() (err error) {
if isInited {
return
}
isInited = true
err = common.ParseFlag()
if err != nil && !common.IsGoTest() {
logger.Warn(err)
}
err = configs.LoadDefaultConfig()
if err != nil {
logger.Warn(err)
return err
}
Config = configs.Config
err = initLog()
if err != nil {
logger.Warn(err)
return err
}
//初始化redis
if len(Config.Redis.Addresses) > 0 {
logger.Info("begin to connect default REDIS server:", Config.Redis.Addresses)
redis.DefaultIns, err = redis.New(Config.Redis)
if err != nil {
logger.Warn("connect to default REDIS faild:", err)
return fmt.Errorf("connect to default redis faild: %s", err.Error())
}
logger.Info("connect to default REDIS server success")
}
//初始化mysql
if Config.Db.Driver != "" {
logger.Info("begin connect to default MYSQL server:", Config.Db.Address)
db.DefaultDao, err = db.NewXormDao(Config, Config.Db)
if err != nil {
logger.Warn("connect to default MYSQL faild:", err)
return fmt.Errorf("connect to default mysql faild: %s", err.Error())
}
logger.Info("connect to default MYSQL server success")
}
//初始化prometheus
if Config.Prometheus.IsEnable {
prometheus.Init(Config.Prometheus)
Handle(Config.Prometheus.RoutePath, promhttp.Handler())
}
return
}
//setLog 初始化log写入文件
func initLog() error {
lc := Config.Logger
logger.SetLogGoID(lc.LogGoID)
if len(lc.LogFile) > 0 {
logger.SetLevelStr(lc.LogLevel)
logger.SetConsole(lc.IsConsole)
if strings.ToLower(lc.LogType) == "daily" {
logger.SetRollingDaily(lc.LogFile)
} else if strings.ToLower(lc.LogType) == "roll" {
logger.SetRollingFile(lc.LogFile, lc.LogMaxNum, lc.LogSize, lc.LogUnit)
} else {
return errors.New("undefined logtype")
}
} else {
logger.SetLevelStr("debug")
var path string
if common.IsExist("/opt/log") {
path = filepath.Join("/opt/log", common.GetAppName()+".log")
} else {
path = filepath.Join(common.GetAppPath(), common.GetAppName()+".log")
}
logger.SetRollingFile(path, 2, 1, "GB")
}
if common.IsGoTest() {
if testing.Verbose() {
logger.SetConsole(true)
} else {
logger.SetConsole(false)
}
} else if common.IsGoRun() {
logger.SetConsole(true)
}
// logger.SetPrefix(fmt.Sprintf("Pid:%d", GetPid()))
// logger.SetPrefix(filepath.Join(common.GetAppName(), common.GetEnv(), common.GetHostName(), common.GetVersion()))
logger.SetPrefix(filepath.Join(common.GetAppName(), common.GetEnv(), common.GetHostName()))
return nil
}