forked from microbay/server
/
config.go
70 lines (62 loc) · 1.84 KB
/
config.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
package server
import (
log "github.com/Sirupsen/logrus"
"github.com/spf13/viper"
)
func loadConfig() API {
log.Debug("server.config::loadConfig")
var api API
var plugins map[string]map[string]interface{}
if err := viper.ReadInConfig(); err != nil {
log.Fatal("Failed loading server.json ", err)
}
if err := viper.MarshalKey("api", &api); err != nil {
log.Fatal("Malformed api section in server.json ", err)
}
if err := viper.MarshalKey("plugins", &plugins); err != nil {
log.Fatal("Malformed plugins section in server.json ", err)
}
api.plugins = plugins
return api
}
func init() {
log.Debug("server.config::init")
setConfigLocations()
setupEnvVars()
initLogger()
}
func setConfigLocations() {
viper.SetConfigName("server") // server.json file name
viper.AddConfigPath("/etc/microbay/") // package config location
viper.AddConfigPath("server/config/") // local dev config location
}
func setupEnvVars() {
viper.SetEnvPrefix("mb")
viper.BindEnv("env")
viper.SetDefault("env", "development")
viper.BindEnv("loglevel")
viper.SetDefault("loglevel", "info")
viper.BindEnv("host")
viper.SetDefault("host", "localhost:7777")
viper.BindEnv("redis_host")
viper.SetDefault("redis_host", "localhost:6379")
viper.BindEnv("redis_password")
viper.SetDefault("redis_password", "")
}
func initLogger() {
log.Debug("server.config::initLogLevel")
logLevel, err := log.ParseLevel(viper.GetString("loglevel"))
if err != nil {
log.Warn("Unsupported log level ", viper.Get("loglevel"))
}
log.SetLevel(logLevel)
// if viper.GetString("env") == "production" {
// log.SetFormatter(&log.JSONFormatter{})
// hook, err := logrus_papertrail.NewPapertrailHook("logs3.papertrailapp.com", 35896, "microbay.local")
// if err != nil {
// log.Error("Unable to connect to local UDP server.")
// } else {
// log.AddHook(hook)
// }
// }
}