config and databse should be close to done
This commit is contained in:
44
config.go
44
config.go
@@ -1,9 +1,11 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"time"
|
||||
|
||||
"github.com/kkyr/fig"
|
||||
"github.com/rs/zerolog"
|
||||
)
|
||||
|
||||
type Config struct {
|
||||
@@ -12,19 +14,45 @@ type Config struct {
|
||||
Port string `fig:"port" default:"3000"`
|
||||
}
|
||||
Logger struct {
|
||||
Level string `fig:"level" default:"error"`
|
||||
Level string `fig:"loglevel" default:"info"`
|
||||
LoggingFile string `fig:"loggingFile" default:"./app/log/goInventorize.log"`
|
||||
}
|
||||
}
|
||||
|
||||
func LoadConfig(server *Server) error {
|
||||
func LoadConfig(s *Server) error {
|
||||
var cfg Config
|
||||
err := fig.Load(&cfg, fig.File("config.yaml"), fig.Dirs("./config"), fig.UseEnv(""))
|
||||
err := fig.Load(&cfg, fig.File("config.yaml"), fig.Dirs("./app/config"), fig.UseEnv("")) // Load in config.yaml, then overwrite with ENV variables
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
fmt.Println("Configuration loaded successfully...")
|
||||
fmt.Println("PORT: ", cfg.Server.Port)
|
||||
fmt.Println("TZ: ", cfg.Timezone)
|
||||
server.Config = &cfg
|
||||
logFile, err := os.OpenFile(cfg.Logger.LoggingFile, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666) // Open/Create log file for writting to log
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
switch cfg.Logger.Level { // Setting our logging level
|
||||
case "error":
|
||||
zerolog.SetGlobalLevel(zerolog.ErrorLevel)
|
||||
case "warn":
|
||||
zerolog.SetGlobalLevel(zerolog.WarnLevel)
|
||||
case "debug":
|
||||
zerolog.SetGlobalLevel(zerolog.DebugLevel)
|
||||
default:
|
||||
zerolog.SetGlobalLevel(zerolog.InfoLevel)
|
||||
|
||||
}
|
||||
loc, err := time.LoadLocation(cfg.Timezone) // Getting our timezone info from config
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
s.LogFile = logFile
|
||||
zerolog.TimestampFunc = func() time.Time { // Making sure our logger writes in the correct tz
|
||||
return time.Now().In(loc)
|
||||
}
|
||||
s.Log = zerolog.New(logFile).With().Timestamp().Logger()
|
||||
|
||||
defer logFile.Close()
|
||||
s.Log.Info().Msg("Configuration loaded successfully...")
|
||||
s.Log.Debug().Msgf("Values: Server Port: %s Logging File: %s Logging Level: %s Timezone: %s", cfg.Server.Port, cfg.Logger.LoggingFile, cfg.Logger.Level, cfg.Timezone)
|
||||
s.Config = &cfg
|
||||
return nil
|
||||
}
|
||||
|
Reference in New Issue
Block a user