-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.go
142 lines (118 loc) · 2.94 KB
/
main.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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
package main
import (
"encoding/json"
"flag"
"log"
"runtime"
"github.com/astaxie/beego"
beconfig "github.com/astaxie/beego/config"
"github.com/soopsio/mgmt/routers"
"go.uber.org/config"
"go.uber.org/zap"
"github.com/go-xorm/xorm"
"github.com/jmoiron/sqlx"
"github.com/soopsio/mgmt/api/v1/custom/ladon"
apimodels "github.com/soopsio/mgmt/api/v1/custom/models"
"github.com/soopsio/mgmt/api/v1/custom/processer"
"github.com/soopsio/mgmt/api/v1/restapi"
mgmtconfig "github.com/soopsio/mgmt/config"
"github.com/soopsio/zlog"
"github.com/soopsio/zlog/zlogbeat/cmd"
// 服务中心
)
func checkError(err error) {
if err != nil {
// debug.PrintStack()
logger.Error("Error:" + err.Error())
}
}
var (
args []string
out []byte
err error
cfg beconfig.Configer
logger *zap.Logger
orm *xorm.Engine
db *sqlx.DB
cfgfile = flag.String("logconf", "conf/log.yml", "main log config file.")
)
func initLogger() {
cmd.RootCmd.Flags().AddGoFlag(flag.CommandLine.Lookup("logconf"))
p, err := config.NewYAMLProviderFromFiles(*cfgfile)
if err != nil {
log.Fatalln(err)
}
sw := zlog.NewWriteSyncer(p)
conf := zap.NewProductionConfig()
conf.DisableCaller = true
conf.Encoding = "json"
logger, _ = conf.Build(zlog.SetOutput(sw, conf))
}
func init() {
initLogger()
if err := GlobalInit(); err != nil {
log.Fatalln("初始化失败", err)
}
logger.Info("初始化完成")
}
func GlobalInit() error {
// logger, err = zap.NewProduction()
log.Println("logger 初始地址::", logger)
// 获取配置实例
cfg = mgmtconfig.GetConfig()
// 初始化orm
logger.Info("初始化 orm")
if err := apimodels.Init(cfg); err != nil {
return err
}
orm = apimodels.GetXormEngine()
db = apimodels.GetSqlxDB()
// 初始化api
logger.Info("初始化 API")
apiconfig := restapi.NewApiConfig()
apiconfig.SetLogger(logger)
// 初始化路由
logger.Info("初始化路由")
routers.Init(orm, logger)
// 初始化任务处理器
logger.Info("任务处理器")
processer.NewProcesserConfig().SetLogger(logger)
// 初始化ladon
logger.Info("初始化 ladon")
ladon_ins := ladon.New()
ladon_ins.SetLogger(logger)
ladon_ins.SetDB(db)
return nil
}
// mainController 控制器入口
type mainController struct {
beego.Controller
}
func (m *mainController) Get() {
// m.TplName = "index.html"
m.Data["json"] = "hello"
m.ServeJSON()
}
type stateController struct {
beego.Controller
}
type memStats struct {
Alloc uint64 `json:"alloc"`
TotalAlloc uint64 `json:"totalalloc"`
HeapAlloc uint64 `json:"heapalloc"`
HeapSys uint64 `json:"heapsys"`
}
func (s *stateController) Get() {
var mema runtime.MemStats
runtime.ReadMemStats(&mema)
memb := memStats{mema.Alloc, mema.TotalAlloc, mema.HeapAlloc, mema.HeapSys}
memStats, _ := json.Marshal(memb)
s.Data["json"] = string(memStats)
s.ServeJSON()
}
func main() {
flag.Parse()
beego.Router("/", &mainController{})
beego.Router("/status", &stateController{})
beego.Run()
}