forked from gwduan/beego-demo
/
main.go
66 lines (56 loc) · 1.33 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
package main
import (
"beego-demo/controllers"
_ "beego-demo/routers"
"fmt"
"github.com/astaxie/beego"
_ "github.com/astaxie/beego/session/redis"
"os"
"os/signal"
"os/user"
"strconv"
"syscall"
)
func setUserId() {
userName := beego.AppConfig.String("user")
u, err := user.Lookup(userName)
if err != nil {
fmt.Println("user config:", err)
return
}
gid, _ := strconv.ParseInt(u.Gid, 0, 0)
uid, _ := strconv.ParseInt(u.Uid, 0, 0)
if err := syscall.Setregid(int(gid), int(gid)); err != nil {
fmt.Println("setregid:", err)
}
if err := syscall.Setreuid(int(uid), int(uid)); err != nil {
fmt.Println("setreuid:", err)
}
}
func handleSignals(c chan os.Signal) {
switch <-c {
case syscall.SIGINT, syscall.SIGTERM:
fmt.Println("Shutdown quickly, bye...")
case syscall.SIGQUIT:
fmt.Println("Shutdown gracefully, bye...")
// do graceful shutdown
}
os.Exit(0)
}
func main() {
//setUserId()
graceful, _ := beego.AppConfig.Bool("graceful")
if !graceful {
sigs := make(chan os.Signal, 1)
signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM,
syscall.SIGQUIT)
go handleSignals(sigs)
}
beego.SetLogger("file", `{"filename":"logs/test.log"}`)
mode := beego.AppConfig.String("runmode")
if mode == "prod" {
beego.SetLevel(beego.LevelInformational)
}
beego.ErrorController(&controllers.ErrorController{})
beego.Run()
}