Files
sless/shared-sqs/app/cmd/goaws.go
T

81 lines
1.9 KiB
Go

package main
import (
"flag"
"net/http"
"os"
"time"
"shared-sqs/app/models"
log "github.com/sirupsen/logrus"
"shared-sqs/app/conf"
"shared-sqs/app/gosqs"
"shared-sqs/app/router"
)
func main() {
var filename string
var debug bool
var loglevel string
flag.StringVar(&filename, "config", "", "config file location + name")
flag.BoolVar(&debug, "debug", false, "set debug log level")
flag.StringVar(&loglevel, "loglevel", "info", "log level (default info)")
flag.Parse()
log.SetFormatter(&log.JSONFormatter{})
log.SetOutput(os.Stdout)
if debug {
log.SetLevel(log.DebugLevel)
} else {
level, err := log.ParseLevel(loglevel)
if err != nil {
log.SetLevel(log.InfoLevel)
log.Warnf("Failed to parse loglevel %v, defaulting to info", loglevel)
} else {
log.SetLevel(level)
}
}
env := "Local"
if flag.NArg() > 0 {
env = flag.Arg(0)
}
portNumbers := conf.LoadYamlConfig(filename, env)
if models.CurrentEnvironment.LogToFile {
filename := models.CurrentEnvironment.LogFile
file, err := os.OpenFile(filename, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
if err == nil {
log.SetOutput(file)
} else {
log.Infof("Failed to log to file: %s, using default stderr", filename)
}
}
r := router.New()
quit := make(chan bool, 0)
go gosqs.PeriodicTasks(1*time.Second, quit)
if len(portNumbers) == 1 {
log.Warnf("GoAws listening on: 0.0.0.0:%s", portNumbers[0])
err := http.ListenAndServe("0.0.0.0:"+portNumbers[0], r)
log.Fatal(err)
} else if len(portNumbers) == 2 {
go func() {
log.Warnf("GoAws listening on: 0.0.0.0:%s", portNumbers[0])
err := http.ListenAndServe("0.0.0.0:"+portNumbers[0], r)
log.Fatal(err)
}()
log.Warnf("GoAws listening on: 0.0.0.0:%s", portNumbers[1])
err := http.ListenAndServe("0.0.0.0:"+portNumbers[1], r)
log.Fatal(err)
} else {
log.Fatal("Not enough or too many ports defined to start GoAws.")
}
}