forked from templates/template-go-backend
Fix logging and database configuration
This commit is contained in:
@@ -15,23 +15,26 @@ import (
|
||||
func LoadConfig(logger *slog.Logger) (*Config, error) {
|
||||
_ = godotenv.Load() // необязательно фейлиться, если файла нет
|
||||
|
||||
cfg := &Config{
|
||||
Timezone: GetEnvAs("TIMEZONE", "UTC", ParseString),
|
||||
ServiceURL: GetEnvAs("SERVICE_URL", "http://localhost:8080", ParseString),
|
||||
LoggingConfig: LoggingConfig{
|
||||
Instance: logger,
|
||||
Level: GetEnvAs("LOG_LEVEL", "info", ParseString),
|
||||
},
|
||||
DatabaseConfig: FillDatabaseConfig(),
|
||||
}
|
||||
cfg := &Config{}
|
||||
|
||||
printConfig(cfg)
|
||||
cfg.Timezone = GetEnvAs("TIMEZONE", "UTC", ParseString)
|
||||
cfg.ServiceURL = GetEnvAs("SERVICE_URL", "http://localhost:8080", ParseString)
|
||||
|
||||
cfg.LoggingConfig.Instance = logger
|
||||
cfg.LoggingConfig.Level = GetEnvAs("LOG_LEVEL", "info", ParseString)
|
||||
cfg.LoggingConfig.ShowCfgDump = GetEnvAs("LOG_SHOW_DUMP", false, ParseBool)
|
||||
|
||||
cfg.DatabaseConfig = FillDatabaseConfig()
|
||||
|
||||
if cfg.LoggingConfig.ShowCfgDump {
|
||||
cfg.Print()
|
||||
}
|
||||
return cfg, nil
|
||||
}
|
||||
|
||||
// PrintConfig выводит конфигурацию (или любой другой struct) в виде таблички "KEY - VALUE".
|
||||
// Функция использует рефлексию для перебора полей структуры.
|
||||
func printConfig(cfg any) {
|
||||
func (c *Config) Print() {
|
||||
|
||||
w := tabwriter.NewWriter(os.Stdout, 0, 0, 2, ' ', 0)
|
||||
fmt.Fprintln(w, "Loaded configuration:")
|
||||
@@ -39,7 +42,7 @@ func printConfig(cfg any) {
|
||||
fmt.Fprintln(w, "----\t-----")
|
||||
|
||||
// Получаем reflect.Value объекта.
|
||||
v := reflect.ValueOf(cfg)
|
||||
v := reflect.ValueOf(c)
|
||||
// Если передан указатель, получаем значение, на которое он указывает.
|
||||
if v.Kind() == reflect.Ptr {
|
||||
v = v.Elem()
|
||||
|
||||
Reference in New Issue
Block a user