diff --git a/config/config.go b/config/config.go index 862dbbc63..39c5f9baf 100644 --- a/config/config.go +++ b/config/config.go @@ -439,6 +439,47 @@ func ReadConfig(filename string, noLog bool) (*Config, error) { return Unmarshal(body, noLog) } +// Parse should be called to correctly set parameters in the config. +func (cfg *Config) Parse() error { + err := zapwriter.ApplyConfig(cfg.Logging) + if err != nil { + return err + } + + if cfg.Common.FindCache, err = CreateCache("index", &cfg.Common.FindCacheConfig); err == nil { + if cfg.Common.FindCacheConfig.Type != "null" { + logger := zapwriter.Logger("config") + logger.Info("enable find cache", zap.String("type", cfg.Common.FindCacheConfig.Type)) + } + } else { + return err + } + + chURL, err := clickhouseURLValidate(cfg.ClickHouse.URL) + if err != nil { + return err + } + if cfg.ClickHouse.TLSParams != nil { + tlsConfig, warns, err := config.ParseClientTLSConfig(cfg.ClickHouse.TLSParams) + if err != nil { + return err + } + if chURL.Scheme == "https" { + cfg.ClickHouse.TLSConfig = tlsConfig + } else { + warns = append(warns, "TLS configurations is ignored because scheme is not HTTPS") + } + if len(warns) > 0 { + logger := zapwriter.Logger("clickhouse tlsconfig") + logger.Warn( + "insecure options detected while parsing HTTP Client TLS config for ClickHouse", + zap.Strings("warnings", warns), + ) + } + } + return nil +} + // Unmarshal process the body to *Config func Unmarshal(body []byte, noLog bool) (*Config, error) { var err error @@ -479,37 +520,10 @@ func Unmarshal(body []byte, noLog bool) (*Config, error) { if err = zapwriter.CheckConfig(cfg.Logging, nil); err != nil { return nil, err } - localManager, err := zapwriter.NewManager(cfg.Logging) - if err != nil { - return nil, err - } if cfg.ClickHouse.RenderMaxConcurrent > cfg.ClickHouse.RenderMaxQueries && cfg.ClickHouse.RenderMaxQueries > 0 { cfg.ClickHouse.RenderMaxConcurrent = 0 } - chURL, err := clickhouseURLValidate(cfg.ClickHouse.URL) - if err != nil { - return nil, err - } - if cfg.ClickHouse.TLSParams != nil { - tlsConfig, warns, err := config.ParseClientTLSConfig(cfg.ClickHouse.TLSParams) - if err != nil { - return nil, err - } - if chURL.Scheme == "https" { - cfg.ClickHouse.TLSConfig = tlsConfig - } else { - warns = append(warns, "TLS configurations is ignored because scheme is not HTTPS") - } - if len(warns) > 0 && !noLog { - logger := localManager.Logger("clickhouse tlsconfig") - logger.Warn( - "insecure options detected while parsing HTTP Client TLS config for ClickHouse", - zap.Strings("warnings", warns), - ) - } - } - for i := range cfg.ClickHouse.QueryParams { if cfg.ClickHouse.QueryParams[i].MaxConcurrent > cfg.ClickHouse.QueryParams[i].MaxQueries && cfg.ClickHouse.QueryParams[i].MaxQueries > 0 { @@ -552,17 +566,6 @@ func Unmarshal(body []byte, noLog bool) (*Config, error) { return nil, err } - if cfg.Common.FindCache, err = CreateCache("index", &cfg.Common.FindCacheConfig); err == nil { - if cfg.Common.FindCacheConfig.Type != "null" { - if !noLog { - logger := localManager.Logger("config") - logger.Info("enable find cache", zap.String("type", cfg.Common.FindCacheConfig.Type)) - } - } - } else { - return nil, err - } - l := len(cfg.Common.TargetBlacklist) if l > 0 { cfg.Common.Blacklist = make([]*regexp.Regexp, l) @@ -605,7 +608,7 @@ func Unmarshal(body []byte, noLog bool) (*Config, error) { if noLog { fmt.Fprintf(os.Stderr, "config deprecation %s: %s\n", name, message) } else { - logger := localManager.Logger("config deprecation") + logger := zapwriter.Logger("config deprecation") logger.Error(name, zap.Error(message)) } } diff --git a/graphite-clickhouse.go b/graphite-clickhouse.go index e9b4ef552..f97e63bd8 100644 --- a/graphite-clickhouse.go +++ b/graphite-clickhouse.go @@ -119,15 +119,11 @@ func main() { return } - if err = zapwriter.ApplyConfig(cfg.Logging); err != nil { + if err = cfg.Parse(); err != nil { log.Fatal(err) } - localManager, err := zapwriter.NewManager(cfg.Logging) - if err != nil { - log.Fatal(err) - } - logger := localManager.Logger("start") + logger := zapwriter.Logger("start") if *verbose { logger.Info("starting graphite-clickhouse", zap.String("build_version", BuildVersion),