-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathmain.go
More file actions
129 lines (118 loc) · 3.09 KB
/
main.go
File metadata and controls
129 lines (118 loc) · 3.09 KB
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
package main
import (
"flag"
"log"
"net/http"
"time"
"github.com/golang-minibear2333/gin-blog/pkg/version"
"github.com/golang-minibear2333/gin-blog/pkg/tracer"
"github.com/gin-gonic/gin"
"github.com/golang-minibear2333/gin-blog/global"
"github.com/golang-minibear2333/gin-blog/internal/model"
"github.com/golang-minibear2333/gin-blog/internal/routers"
"github.com/golang-minibear2333/gin-blog/pkg/logger"
"github.com/golang-minibear2333/gin-blog/pkg/setting"
"gopkg.in/natefinch/lumberjack.v2"
)
func init() {
flagRun()
// 配置初始化,读取到全局model里面
err := setupSetting()
if err != nil {
log.Fatalf("init.setupSetting err: %v", err)
}
err = setupLogger()
if err != nil {
log.Fatalf("init.setupLogger err: %v", err)
}
// 数据库orm配置初始化
err = setupDBEngine()
if err != nil {
log.Fatalf("init.setupDBEngine err: %v", err)
}
err = setupTracer()
if err != nil {
log.Fatalf("init.setupTracer err: %v", err)
}
}
// @title 博客系统
// @version 1.0
// @description Go 语言编程之旅:一起用 Go 做项目
// @termsOfService https://github.com/golang-minibear2333/gin-blog
func main() {
gin.SetMode(global.ServerSetting.RunMode)
router := routers.NewRouter()
s := &http.Server{
Addr: ":" + global.ServerSetting.HttpPort,
Handler: router,
ReadTimeout: global.ServerSetting.ReadTimeout,
WriteTimeout: global.ServerSetting.WriteTimeout,
MaxHeaderBytes: 1 << 20,
}
s.ListenAndServe()
}
func flagRun() {
flag.Parse()
version.CmdParseVersion()
}
func setupSetting() error {
newSetting, err := setting.NewSetting()
if err != nil {
return err
}
err = newSetting.ReadSection("Server", &global.ServerSetting)
if err != nil {
return err
}
err = newSetting.ReadSection("App", &global.AppSetting)
if err != nil {
return err
}
err = newSetting.ReadSection("Database", &global.DatabaseSetting)
if err != nil {
return err
}
err = newSetting.ReadSection("JWT", &global.JWTSetting)
if err != nil {
return err
}
err = newSetting.ReadSection("Email", &global.EmailSetting)
if err != nil {
return err
}
global.JWTSetting.Expire *= time.Second
global.ServerSetting.ReadTimeout *= time.Second
global.ServerSetting.WriteTimeout *= time.Second
global.AppSetting.DefaultContextTimeout *= time.Second
return nil
}
func setupDBEngine() error {
var err error
// 千万小心全局变量不要被局部变量覆盖,也就是不要用 := 符号
global.DBEngine, err = model.NewDBEngine(global.DatabaseSetting)
if err != nil {
return err
}
return nil
}
func setupLogger() error {
global.Logger = logger.NewLogger(&lumberjack.Logger{
Filename: global.AppSetting.LogSavePath + "/" + global.AppSetting.LogFileName + global.AppSetting.LogFileExt,
MaxSize: 600,
MaxAge: 10,
LocalTime: true,
}, "", log.LstdFlags).WithCaller(2)
return nil
}
func setupTracer() error {
jaegerTracer, _, err := tracer.NewJaegerTracer(
version.AppName,
"127.0.0.1:6831",
)
if err != nil {
return err
}
// 放到全局变量中,供后续中间件或者不同的自定义Span中打点使用
global.Tracer = jaegerTracer
return nil
}