/
app.go
49 lines (39 loc) · 1.01 KB
/
app.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
package main
import (
"fmt"
"os"
"runtime"
"github.com/fvbock/endless"
"github.com/gin-gonic/gin"
"github.com/miyabayt/gin-rest/config"
"github.com/miyabayt/gin-rest/logger"
"github.com/miyabayt/gin-rest/routes"
)
var (
listenPort = ":3001"
)
func startHttpServer() {
router := gin.New() // don't need to use Logger, if we use apache/nginx.
router.Use(gin.Recovery())
routes.Use(router)
if gin.Mode() == gin.ReleaseMode {
logger.Infof("GIN Listening and serving HTTP on %s", listenPort)
endless.ListenAndServe(listenPort, router) // use endless for graceful restart/stop.
} else {
router.Run(listenPort)
}
}
func main() {
appName, _ := config.String("app.name")
logger.Infof("starting %s", appName)
startHttpServer()
}
func init() {
numCpu := runtime.NumCPU()
runtime.GOMAXPROCS(numCpu) // until "go 1.5"
logger.Infof("GOMAXPROCS set to %d.", numCpu)
if envPort := os.Getenv("PORT"); 0 < len(envPort) {
listenPort = fmt.Sprintf(":%s", envPort)
logger.Infof("port set to %s.", listenPort)
}
}