From 0bdcfd2fecc03b15be9fc4b0489431b8fa86aed8 Mon Sep 17 00:00:00 2001 From: Mihir Mittal <105881639+mihirm21@users.noreply.github.com> Date: Mon, 30 Jan 2023 22:36:04 +0530 Subject: [PATCH] feat: update in logging to console and Unify case usage, seperators and punctuation for logging (#322) Signed-off-by: Mihir Mittal <105881639+mihirm21@users.noreply.github.com> --- cmd/root.go | 2 +- cmd/start.go | 6 +++-- cmd/version.go | 2 +- docs/configuration/flagd_start.md | 1 + pkg/eval/fractional_evaluation.go | 6 ++--- pkg/eval/json_evaluator.go | 16 ++++++------- pkg/eval/json_evaluator_model.go | 2 +- pkg/eval/json_evaluator_test.go | 32 +++++++++++++------------- pkg/logger/logger.go | 4 ++-- pkg/runtime/from_config.go | 6 ++--- pkg/runtime/runtime.go | 6 ++--- pkg/service/connect_metrics.go | 2 +- pkg/sync/file/filepath_sync.go | 12 +++++----- pkg/sync/file/filepath_sync_test.go | 4 ++-- pkg/sync/http/http_sync.go | 12 +++++----- pkg/sync/http/http_sync_test.go | 8 +++---- pkg/sync/kubernetes/kubernetes_sync.go | 26 ++++++++++----------- 17 files changed, 75 insertions(+), 72 deletions(-) diff --git a/cmd/root.go b/cmd/root.go index 831f2b457..c70638f9b 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -72,6 +72,6 @@ func initConfig() { // If a config file is found, read it in. if err := viper.ReadInConfig(); err == nil { - fmt.Fprintln(os.Stderr, "Using config file:", viper.ConfigFileUsed()) + fmt.Fprintln(os.Stderr, "using config file:", viper.ConfigFileUsed()) } } diff --git a/cmd/start.go b/cmd/start.go index 111bd4684..94b830196 100644 --- a/cmd/start.go +++ b/cmd/start.go @@ -24,6 +24,7 @@ const ( bearerTokenFlagName = "bearer-token" corsFlagName = "cors-origin" syncProviderFlagName = "sync-provider" + logFormatFlagName = "log-format" ) func init() { @@ -55,6 +56,7 @@ func init() { flags.StringP( syncProviderFlagName, "y", "", "DEPRECATED: Set a sync provider e.g. filepath or remote", ) + flags.StringP(logFormatFlagName, "z", "console", "Set the logging format, e.g. console or json ") _ = viper.BindPFlag(portFlagName, flags.Lookup(portFlagName)) _ = viper.BindPFlag(metricsPortFlagName, flags.Lookup(metricsPortFlagName)) @@ -67,6 +69,7 @@ func init() { _ = viper.BindPFlag(bearerTokenFlagName, flags.Lookup(bearerTokenFlagName)) _ = viper.BindPFlag(corsFlagName, flags.Lookup(corsFlagName)) _ = viper.BindPFlag(syncProviderFlagName, flags.Lookup(syncProviderFlagName)) + _ = viper.BindPFlag(logFormatFlagName, flags.Lookup(logFormatFlagName)) } // startCmd represents the start command @@ -83,7 +86,7 @@ var startCmd = &cobra.Command{ } else { level = zapcore.InfoLevel } - l, err := logger.NewZapLogger(level) + l, err := logger.NewZapLogger(level, viper.GetString(logFormatFlagName)) if err != nil { log.Fatalf("can't initialize zap logger: %v", err) } @@ -99,7 +102,6 @@ var startCmd = &cobra.Command{ rtLogger.Warn("DEPRECATED: The --evaluator flag has been deprecated. " + "Docs: https://github.com/open-feature/flagd/blob/main/docs/configuration/configuration.md") } - // Build Runtime ----------------------------------------------------------- rt, err := runtime.FromConfig(logger, runtime.Config{ ServicePort: viper.GetInt32(portFlagName), diff --git a/cmd/version.go b/cmd/version.go index f5dea928d..7a6e7e8dc 100644 --- a/cmd/version.go +++ b/cmd/version.go @@ -27,6 +27,6 @@ var versionCmd = &cobra.Command{ } } } - fmt.Printf("flagd %s (%s) built at %s\n", Version, Commit, Date) + fmt.Printf("flagd: %s (%s), built at: %s\n", Version, Commit, Date) }, } diff --git a/docs/configuration/flagd_start.md b/docs/configuration/flagd_start.md index 145ac9cbe..1c14f76d2 100644 --- a/docs/configuration/flagd_start.md +++ b/docs/configuration/flagd_start.md @@ -13,6 +13,7 @@ flagd start [flags] -C, --cors-origin strings CORS allowed origins, * will allow all origins -e, --evaluator string DEPRECATED: Set an evaluator e.g. json, yaml/yml.Please note that yaml/yml and json evaluations work the same (yaml/yml files are converted to json internally) (default "json") -h, --help help for start + -z, --log-format string Set the logging format, e.g. console or json (default "console") -m, --metrics-port int32 Port to serve metrics on (default 8014) -p, --port int32 Port to listen on (default 8013) -c, --server-cert-path string Server side tls certificate path diff --git a/pkg/eval/fractional_evaluation.go b/pkg/eval/fractional_evaluation.go index d6413b8da..482ba3f38 100644 --- a/pkg/eval/fractional_evaluation.go +++ b/pkg/eval/fractional_evaluation.go @@ -16,7 +16,7 @@ type fractionalEvaluationDistribution struct { func (je *JSONEvaluator) fractionalEvaluation(values, data interface{}) interface{} { valueToDistribute, feDistributions, err := parseFractionalEvaluationData(values, data) if err != nil { - je.Logger.Error(fmt.Sprintf("parseFractionalEvaluationData: %v", err)) + je.Logger.Error(fmt.Sprintf("parse fractional evaluation data: %v", err)) return nil } @@ -49,7 +49,7 @@ func parseFractionalEvaluationData(values, data interface{}) (string, []fraction valueToDistribute, ok := v.(string) if !ok { - return "", nil, fmt.Errorf("var %s isn't of type string", bucketBy) + return "", nil, fmt.Errorf("var: %s isn't of type string", bucketBy) } feDistributions, err := parseFractionalEvaluationDistributions(valuesArray) @@ -92,7 +92,7 @@ func parseFractionalEvaluationDistributions(values []interface{}) ([]fractionalE } if sumOfPercentages != 100 { - return nil, fmt.Errorf("percentages must sum to 100, got %d", sumOfPercentages) + return nil, fmt.Errorf("percentages must sum to 100, got: %d", sumOfPercentages) } return feDistributions, nil diff --git a/pkg/eval/json_evaluator.go b/pkg/eval/json_evaluator.go index da2eddd53..f908832db 100644 --- a/pkg/eval/json_evaluator.go +++ b/pkg/eval/json_evaluator.go @@ -152,7 +152,7 @@ func (je *JSONEvaluator) ResolveAllValues(reqID string, context *structpb.Struct ) } if err != nil { - je.Logger.ErrorWithID(reqID, fmt.Sprintf("Bulk evaluation: key %s returned error %s", flagKey, err.Error())) + je.Logger.ErrorWithID(reqID, fmt.Sprintf("bulk evaluation: key: %s returned error: %s", flagKey, err.Error())) continue } values = append(values, NewAnyValue(value, variant, reason, flagKey)) @@ -225,12 +225,12 @@ func (je *JSONEvaluator) evaluateVariant( flag, ok := je.state.Flags[flagKey] if !ok { // flag not found - je.Logger.DebugWithID(reqID, fmt.Sprintf("requested flag could not be found %s", flagKey)) + je.Logger.DebugWithID(reqID, fmt.Sprintf("requested flag could not be found: %s", flagKey)) return "", model.ErrorReason, errors.New(model.FlagNotFoundErrorCode) } if flag.State == Disabled { - je.Logger.DebugWithID(reqID, fmt.Sprintf("requested flag is disabled %s", flagKey)) + je.Logger.DebugWithID(reqID, fmt.Sprintf("requested flag is disabled: %s", flagKey)) return "", model.ErrorReason, errors.New(model.FlagDisabledErrorCode) } @@ -240,13 +240,13 @@ func (je *JSONEvaluator) evaluateVariant( if targeting != nil && string(targeting) != "{}" { targetingBytes, err := targeting.MarshalJSON() if err != nil { - je.Logger.ErrorWithID(reqID, fmt.Sprintf("Error parsing rules for flag %s, %s", flagKey, err)) + je.Logger.ErrorWithID(reqID, fmt.Sprintf("Error parsing rules for flag: %s, %s", flagKey, err)) return "", model.ErrorReason, err } b, err := json.Marshal(context) if err != nil { - je.Logger.ErrorWithID(reqID, fmt.Sprintf("error parsing context for flag %s, %s, %v", flagKey, err, context)) + je.Logger.ErrorWithID(reqID, fmt.Sprintf("error parsing context for flag: %s, %s, %v", flagKey, err, context)) return "", model.ErrorReason, errors.New(model.ErrorReason) } @@ -254,7 +254,7 @@ func (je *JSONEvaluator) evaluateVariant( // evaluate json-logic rules to determine the variant err = jsonlogic.Apply(bytes.NewReader(targetingBytes), bytes.NewReader(b), &result) if err != nil { - je.Logger.ErrorWithID(reqID, fmt.Sprintf("Error applying rules %s", err)) + je.Logger.ErrorWithID(reqID, fmt.Sprintf("error applying rules: %s", err)) return "", model.ErrorReason, err } // strip whitespace and quotes from the variant @@ -265,7 +265,7 @@ func (je *JSONEvaluator) evaluateVariant( return variant, model.TargetingMatchReason, nil } - je.Logger.DebugWithID(reqID, fmt.Sprintf("returning default variant for flagKey %s, variant is not valid", flagKey)) + je.Logger.DebugWithID(reqID, fmt.Sprintf("returning default variant for flagKey: %s, variant is not valid", flagKey)) reason = model.DefaultReason } else { reason = model.StaticReason @@ -279,7 +279,7 @@ func validateDefaultVariants(flags Flags) error { for name, flag := range flags.Flags { if _, ok := flag.Variants[flag.DefaultVariant]; !ok { return fmt.Errorf( - "default variant '%s' isn't a valid variant of flag '%s'", flag.DefaultVariant, name, + "default variant: '%s' isn't a valid variant of flag: '%s'", flag.DefaultVariant, name, ) } } diff --git a/pkg/eval/json_evaluator_model.go b/pkg/eval/json_evaluator_model.go index 97076ceba..1ca4e3093 100644 --- a/pkg/eval/json_evaluator_model.go +++ b/pkg/eval/json_evaluator_model.go @@ -44,7 +44,7 @@ func (f Flags) Merge(logger *logger.Logger, source string, ff Flags) (Flags, map if val.Source != source { logger.Warn( fmt.Sprintf( - "key value %s is duplicated across multiple sources this can lead to unexpected behavior: %s, %s", + "key value: %s is duplicated across multiple sources this can lead to unexpected behavior: %s, %s", k, val.Source, source, diff --git a/pkg/eval/json_evaluator_test.go b/pkg/eval/json_evaluator_test.go index 70d57fb7b..866f8fb27 100644 --- a/pkg/eval/json_evaluator_test.go +++ b/pkg/eval/json_evaluator_test.go @@ -284,13 +284,13 @@ func TestGetState_Valid_ContainsFlag(t *testing.T) { // get the state state, err := evaluator.GetState() if err != nil { - t.Fatalf("Expected no error") + t.Fatalf("expected no error") } // validate it contains the flag wants := "validFlag" if !strings.Contains(state, wants) { - t.Fatalf("Expected %s to contain %s", state, wants) + t.Fatalf("expected: %s to contain: %s", state, wants) } } @@ -300,7 +300,7 @@ func TestSetState_Invalid_Error(t *testing.T) { // set state with an invalid flag definition _, err := evaluator.SetState("", InvalidFlags) if err == nil { - t.Fatalf("Expected error") + t.Fatalf("expected error") } } @@ -310,7 +310,7 @@ func TestSetState_Valid_NoError(t *testing.T) { // set state with a valid flag definition _, err := evaluator.SetState("", ValidFlags) if err != nil { - t.Fatalf("Expected no error") + t.Fatalf("expected no error") } } @@ -318,7 +318,7 @@ func TestResolveAllValues(t *testing.T) { evaluator := eval.JSONEvaluator{Logger: logger.NewLogger(nil, false)} _, err := evaluator.SetState("", Flags) if err != nil { - t.Fatalf("Expected no error") + t.Fatalf("expected no error") } tests := []struct { context map[string]interface{} @@ -378,7 +378,7 @@ func TestResolveBooleanValue(t *testing.T) { evaluator := eval.JSONEvaluator{Logger: logger.NewLogger(nil, false)} _, err := evaluator.SetState("", Flags) if err != nil { - t.Fatalf("Expected no error") + t.Fatalf("expected no error") } for _, test := range tests { @@ -417,7 +417,7 @@ func BenchmarkResolveBooleanValue(b *testing.B) { evaluator := eval.JSONEvaluator{Logger: logger.NewLogger(nil, false)} _, err := evaluator.SetState("", Flags) if err != nil { - b.Fatalf("Expected no error") + b.Fatalf("expected no error") } reqID := "test" for _, test := range tests { @@ -461,7 +461,7 @@ func TestResolveStringValue(t *testing.T) { evaluator := eval.JSONEvaluator{Logger: logger.NewLogger(nil, false)} _, err := evaluator.SetState("", Flags) if err != nil { - t.Fatalf("Expected no error") + t.Fatalf("expected no error") } for _, test := range tests { @@ -501,7 +501,7 @@ func BenchmarkResolveStringValue(b *testing.B) { evaluator := eval.JSONEvaluator{Logger: logger.NewLogger(nil, false)} _, err := evaluator.SetState("", Flags) if err != nil { - b.Fatalf("Expected no error") + b.Fatalf("expected no error") } reqID := "test" for _, test := range tests { @@ -545,7 +545,7 @@ func TestResolveFloatValue(t *testing.T) { evaluator := eval.JSONEvaluator{Logger: logger.NewLogger(nil, false)} _, err := evaluator.SetState("", Flags) if err != nil { - t.Fatalf("Expected no error") + t.Fatalf("expected no error") } for _, test := range tests { @@ -585,7 +585,7 @@ func BenchmarkResolveFloatValue(b *testing.B) { evaluator := eval.JSONEvaluator{Logger: logger.NewLogger(nil, false)} _, err := evaluator.SetState("", Flags) if err != nil { - b.Fatalf("Expected no error") + b.Fatalf("expected no error") } reqID := "test" for _, test := range tests { @@ -593,7 +593,7 @@ func BenchmarkResolveFloatValue(b *testing.B) { if err != nil { b.Fatal(err) } - b.Run(fmt.Sprintf("test %s", test.flagKey), func(b *testing.B) { + b.Run(fmt.Sprintf("test: %s", test.flagKey), func(b *testing.B) { for i := 0; i < b.N; i++ { val, _, reason, err := evaluator.ResolveFloatValue(reqID, test.flagKey, apStruct) @@ -629,7 +629,7 @@ func TestResolveIntValue(t *testing.T) { evaluator := eval.JSONEvaluator{Logger: logger.NewLogger(nil, false)} _, err := evaluator.SetState("", Flags) if err != nil { - t.Fatalf("Expected no error") + t.Fatalf("expected no error") } for _, test := range tests { @@ -669,7 +669,7 @@ func BenchmarkResolveIntValue(b *testing.B) { evaluator := eval.JSONEvaluator{Logger: logger.NewLogger(nil, false)} _, err := evaluator.SetState("", Flags) if err != nil { - b.Fatalf("Expected no error") + b.Fatalf("expected no error") } reqID := "test" for _, test := range tests { @@ -713,7 +713,7 @@ func TestResolveObjectValue(t *testing.T) { evaluator := eval.JSONEvaluator{Logger: logger.NewLogger(nil, false)} _, err := evaluator.SetState("", Flags) if err != nil { - t.Fatalf("Expected no error") + t.Fatalf("expected no error") } for _, test := range tests { @@ -756,7 +756,7 @@ func BenchmarkResolveObjectValue(b *testing.B) { evaluator := eval.JSONEvaluator{Logger: logger.NewLogger(nil, false)} _, err := evaluator.SetState("", Flags) if err != nil { - b.Fatalf("Expected no error") + b.Fatalf("expected no error") } reqID := "test" for _, test := range tests { diff --git a/pkg/logger/logger.go b/pkg/logger/logger.go index 540e3a66a..7e60ead33 100644 --- a/pkg/logger/logger.go +++ b/pkg/logger/logger.go @@ -166,9 +166,9 @@ func (l *Logger) ClearFields(reqID string) { } // NewZapLogger creates a *zap.Logger using the base config -func NewZapLogger(level zapcore.Level) (*zap.Logger, error) { +func NewZapLogger(level zapcore.Level, logFormat string) (*zap.Logger, error) { cfg := zap.Config{ - Encoding: "json", + Encoding: logFormat, Level: zap.NewAtomicLevelAt(level), OutputPaths: []string{"stderr"}, ErrorOutputPaths: []string{"stderr"}, diff --git a/pkg/runtime/from_config.go b/pkg/runtime/from_config.go index 378a6db6d..8684fe6b9 100644 --- a/pkg/runtime/from_config.go +++ b/pkg/runtime/from_config.go @@ -73,7 +73,7 @@ func (r *Runtime) setSyncImplFromConfig(logger *logger.Logger) error { ), ProviderArgs: r.config.ProviderArgs, }) - rtLogger.Debug(fmt.Sprintf("Using filepath sync-provider for %q", uri)) + rtLogger.Debug(fmt.Sprintf("using filepath sync-provider for: %q", uri)) case regCrd.Match(uriB): r.SyncImpl = append(r.SyncImpl, &kubernetes.Sync{ Logger: logger.WithFields( @@ -83,7 +83,7 @@ func (r *Runtime) setSyncImplFromConfig(logger *logger.Logger) error { URI: regCrd.ReplaceAllString(uri, ""), ProviderArgs: r.config.ProviderArgs, }) - rtLogger.Debug(fmt.Sprintf("Using kubernetes sync-provider for %s", uri)) + rtLogger.Debug(fmt.Sprintf("using kubernetes sync-provider for: %s", uri)) case regURL.Match(uriB): r.SyncImpl = append(r.SyncImpl, &httpSync.Sync{ URI: uri, @@ -98,7 +98,7 @@ func (r *Runtime) setSyncImplFromConfig(logger *logger.Logger) error { ProviderArgs: r.config.ProviderArgs, Cron: cron.New(), }) - rtLogger.Debug(fmt.Sprintf("Using remote sync-provider for %q", uri)) + rtLogger.Debug(fmt.Sprintf("using remote sync-provider for: %q", uri)) default: return fmt.Errorf("invalid sync uri argument: %s, must start with 'file:', 'http(s)://', or 'core.openfeature.dev'", uri) diff --git a/pkg/runtime/runtime.go b/pkg/runtime/runtime.go index 2569328d8..281c8b996 100644 --- a/pkg/runtime/runtime.go +++ b/pkg/runtime/runtime.go @@ -42,13 +42,13 @@ type Config struct { func (r *Runtime) Start() error { if r.Service == nil { - return errors.New("no Service set") + return errors.New("no service set") } if len(r.SyncImpl) == 0 { - return errors.New("no SyncImplementation set") + return errors.New("no sync implementation set") } if r.Evaluator == nil { - return errors.New("no Evaluator set") + return errors.New("no evaluator set") } ctx, cancel := signal.NotifyContext(context.Background(), os.Interrupt, syscall.SIGTERM) diff --git a/pkg/service/connect_metrics.go b/pkg/service/connect_metrics.go index 54734ddeb..3fa142a87 100644 --- a/pkg/service/connect_metrics.go +++ b/pkg/service/connect_metrics.go @@ -91,7 +91,7 @@ type Middleware struct { func (c *middlewareConfig) defaults() { if c.Recorder == nil { - panic("Recorder is required") + panic("recorder is required") } } diff --git a/pkg/sync/file/filepath_sync.go b/pkg/sync/file/filepath_sync.go index 8270cafa4..c6128c477 100644 --- a/pkg/sync/file/filepath_sync.go +++ b/pkg/sync/file/filepath_sync.go @@ -46,16 +46,16 @@ func (fs *Sync) Sync(ctx context.Context, dataSync chan<- sync.DataSync) error { dataSync <- sync.DataSync{FlagData: fetch, Source: fs.URI} - fs.Logger.Info(fmt.Sprintf("Watching filepath: %s", fs.URI)) + fs.Logger.Info(fmt.Sprintf("watching filepath: %s", fs.URI)) for { select { case event, ok := <-watcher.Events: if !ok { - fs.Logger.Info("Filepath notifier closed") + fs.Logger.Info("filepath notifier closed") return errors.New("filepath notifier closed") } - fs.Logger.Info(fmt.Sprintf("Filepath event: %s %s", event.Name, event.Op.String())) + fs.Logger.Info(fmt.Sprintf("filepath event: %s %s", event.Name, event.Op.String())) switch event.Op { case fsnotify.Create, fsnotify.Write: @@ -69,7 +69,7 @@ func (fs *Sync) Sync(ctx context.Context, dataSync chan<- sync.DataSync) error { // Updates cause a remove event, we need to re-add the watcher in this case. err = watcher.Add(fs.URI) if err != nil { - fs.Logger.Error(fmt.Sprintf("Error restoring watcher, file may have been deleted: %s", err.Error())) + fs.Logger.Error(fmt.Sprintf("error restoring watcher, file may have been deleted: %s", err.Error())) } } case err, ok := <-watcher.Errors: @@ -79,7 +79,7 @@ func (fs *Sync) Sync(ctx context.Context, dataSync chan<- sync.DataSync) error { fs.Logger.Error(err.Error()) case <-ctx.Done(): - fs.Logger.Debug("Exiting file watcher") + fs.Logger.Debug("exiting file watcher") return nil } } @@ -114,7 +114,7 @@ func (fs *Sync) fetch(_ context.Context) (string, error) { case "json": return string(rawFile), nil default: - return "", fmt.Errorf("filepath extension for URI '%s' is not supported", fs.URI) + return "", fmt.Errorf("filepath extension for URI: '%s' is not supported", fs.URI) } } diff --git a/pkg/sync/file/filepath_sync_test.go b/pkg/sync/file/filepath_sync_test.go index 3998e4eed..5a4f1007c 100644 --- a/pkg/sync/file/filepath_sync_test.go +++ b/pkg/sync/file/filepath_sync_test.go @@ -41,7 +41,7 @@ func TestSimpleSync(t *testing.T) { data := <-dataSyncChan if data.FlagData != fetchFileContents { - t.Errorf("Expected content %s, but received content %s", fetchFileContents, data.FlagData) + t.Errorf("expected content: %s, but received content: %s", fetchFileContents, data.FlagData) } } @@ -61,7 +61,7 @@ func TestFilePathSync_Fetch(t *testing.T) { } if fetched != fetchFileContents { - t.Errorf("expected fetched to be '%s', got '%s'", fetchFileContents, fetched) + t.Errorf("expected fetched to be: '%s', got: '%s'", fetchFileContents, fetched) } }, }, diff --git a/pkg/sync/http/http_sync.go b/pkg/sync/http/http_sync.go index 6fe91b4d8..477981f6f 100644 --- a/pkg/sync/http/http_sync.go +++ b/pkg/sync/http/http_sync.go @@ -54,23 +54,23 @@ func (hs *Sync) Sync(ctx context.Context, dataSync chan<- sync.DataSync) error { } if len(body) == 0 { - hs.Logger.Debug("Configuration deleted") + hs.Logger.Debug("configuration deleted") } else { if hs.LastBodySHA == "" { - hs.Logger.Debug("New configuration created") + hs.Logger.Debug("new configuration created") msg, err := hs.Fetch(ctx) if err != nil { - hs.Logger.Error(fmt.Sprintf("Error fetching: %s", err.Error())) + hs.Logger.Error(fmt.Sprintf("error fetching: %s", err.Error())) } else { dataSync <- sync.DataSync{FlagData: msg, Source: hs.URI} } } else { currentSHA := hs.generateSha(body) if hs.LastBodySHA != currentSHA { - hs.Logger.Debug("Configuration modified") + hs.Logger.Debug("configuration modified") msg, err := hs.Fetch(ctx) if err != nil { - hs.Logger.Error(fmt.Sprintf("Error fetching: %s", err.Error())) + hs.Logger.Error(fmt.Sprintf("error fetching: %s", err.Error())) } else { dataSync <- sync.DataSync{FlagData: msg, Source: hs.URI} } @@ -108,7 +108,7 @@ func (hs *Sync) fetchBodyFromURL(ctx context.Context, url string) ([]byte, error defer func() { err = resp.Body.Close() if err != nil { - hs.Logger.Debug(fmt.Sprintf("Error closing the response body: %s", err.Error())) + hs.Logger.Debug(fmt.Sprintf("error closing the response body: %s", err.Error())) } }() diff --git a/pkg/sync/http/http_sync_test.go b/pkg/sync/http/http_sync_test.go index 55bfa005a..c441e017d 100644 --- a/pkg/sync/http/http_sync_test.go +++ b/pkg/sync/http/http_sync_test.go @@ -51,7 +51,7 @@ func TestSimpleSync(t *testing.T) { data := <-dataSyncChan if data.FlagData != resp { - t.Errorf("Expected content %s, but received content %s", resp, data.FlagData) + t.Errorf("expected content: %s, but received content: %s", resp, data.FlagData) } } @@ -78,7 +78,7 @@ func TestHTTPSync_Fetch(t *testing.T) { } expected := "test response" if fetched != expected { - t.Errorf("expected fetched to be '%s', got '%s'", expected, fetched) + t.Errorf("expected fetched to be: '%s', got: '%s'", expected, fetched) } }, }, @@ -106,7 +106,7 @@ func TestHTTPSync_Fetch(t *testing.T) { expectedLastBodySHA := "fUH6MbDL8tR0nCiC4bag0Rf_6is=" if httpSync.LastBodySHA != expectedLastBodySHA { t.Errorf( - "expected last body sha to be '%s', got '%s'", expectedLastBodySHA, httpSync.LastBodySHA, + "expected last body sha to be: '%s', got: '%s'", expectedLastBodySHA, httpSync.LastBodySHA, ) } }, @@ -127,7 +127,7 @@ func TestHTTPSync_Fetch(t *testing.T) { expectedLastBodySHA := "fUH6MbDL8tR0nCiC4bag0Rf_6is=" if httpSync.LastBodySHA != expectedLastBodySHA { t.Errorf( - "expected last body sha to be '%s', got '%s'", expectedLastBodySHA, httpSync.LastBodySHA, + "expected last body sha to be: '%s', got: '%s'", expectedLastBodySHA, httpSync.LastBodySHA, ) } }, diff --git a/pkg/sync/kubernetes/kubernetes_sync.go b/pkg/sync/kubernetes/kubernetes_sync.go index edc5f0242..3fd891654 100644 --- a/pkg/sync/kubernetes/kubernetes_sync.go +++ b/pkg/sync/kubernetes/kubernetes_sync.go @@ -36,7 +36,7 @@ func (k *Sync) Sync(ctx context.Context, dataSync chan<- sync.DataSync) error { // Initial fetch fetch, err := k.fetch(ctx) if err != nil { - k.Logger.Error(fmt.Sprintf("Error with the initial fetch: %s", err.Error())) + k.Logger.Error(fmt.Sprintf("error with the initial fetch: %s", err.Error())) return err } @@ -53,10 +53,10 @@ func (k *Sync) Sync(ctx context.Context, dataSync chan<- sync.DataSync) error { case w := <-notifies: switch w.GetEvent().EventType { case DefaultEventTypeCreate: - k.Logger.Debug("New configuration created") + k.Logger.Debug("new configuration created") msg, err := k.fetch(ctx) if err != nil { - k.Logger.Error(fmt.Sprintf("Error fetching after Create notification: %s", err.Error())) + k.Logger.Error(fmt.Sprintf("error fetching after create notification: %s", err.Error())) continue } @@ -65,15 +65,15 @@ func (k *Sync) Sync(ctx context.Context, dataSync chan<- sync.DataSync) error { k.Logger.Debug("Configuration modified") msg, err := k.fetch(ctx) if err != nil { - k.Logger.Error(fmt.Sprintf("Error fetching after Write notification: %s", err.Error())) + k.Logger.Error(fmt.Sprintf("error fetching after write notification: %s", err.Error())) continue } dataSync <- sync.DataSync{FlagData: msg, Source: k.URI} case DefaultEventTypeDelete: - k.Logger.Debug("Configuration deleted") + k.Logger.Debug("configuration deleted") case DefaultEventTypeReady: - k.Logger.Debug("Notifier ready") + k.Logger.Debug("notifier ready") } } } @@ -81,7 +81,7 @@ func (k *Sync) Sync(ctx context.Context, dataSync chan<- sync.DataSync) error { func (k *Sync) fetch(ctx context.Context) (string, error) { if k.URI == "" { - k.Logger.Error("No target feature flag configuration set") + k.Logger.Error("no target feature flag configuration set") return "{}", nil } @@ -92,7 +92,7 @@ func (k *Sync) fetch(ctx context.Context) (string, error) { } if k.client == nil { - k.Logger.Warn("Client not initialised") + k.Logger.Warn("client not initialised") return "{}", nil } @@ -141,13 +141,13 @@ func (k *Sync) notify(ctx context.Context, c chan<- INotify) { return } k.Logger.Info( - fmt.Sprintf("Starting kubernetes sync notifier for resource %s", + fmt.Sprintf("starting kubernetes sync notifier for resource: %s", k.URI, ), ) clusterConfig, err := k.buildConfiguration() if err != nil { - k.Logger.Error(fmt.Sprintf("Error building configuration: %s", err)) + k.Logger.Error(fmt.Sprintf("error building configuration: %s", err)) } if err := v1alpha1.AddToScheme(scheme.Scheme); err != nil { k.Logger.Fatal(err.Error()) @@ -172,19 +172,19 @@ func (k *Sync) notify(ctx context.Context, c chan<- INotify) { } if _, err = informer.AddEventHandler(cache.ResourceEventHandlerFuncs{ AddFunc: func(obj interface{}) { - k.Logger.Info(fmt.Sprintf("kube sync notifier event: add %s %s", objectKey.Namespace, objectKey.Name)) + k.Logger.Info(fmt.Sprintf("kube sync notifier event: add: %s %s", objectKey.Namespace, objectKey.Name)) if err := createFuncHandler(obj, objectKey, c); err != nil { k.Logger.Warn(err.Error()) } }, UpdateFunc: func(oldObj, newObj interface{}) { - k.Logger.Info(fmt.Sprintf("kube sync notifier event: update %s %s", objectKey.Namespace, objectKey.Name)) + k.Logger.Info(fmt.Sprintf("kube sync notifier event: update: %s %s", objectKey.Namespace, objectKey.Name)) if err := updateFuncHandler(oldObj, newObj, objectKey, c); err != nil { k.Logger.Warn(err.Error()) } }, DeleteFunc: func(obj interface{}) { - k.Logger.Info(fmt.Sprintf("kube sync notifier event: delete %s %s", objectKey.Namespace, objectKey.Name)) + k.Logger.Info(fmt.Sprintf("kube sync notifier event: delete: %s %s", objectKey.Namespace, objectKey.Name)) if err := deleteFuncHandler(obj, objectKey, c); err != nil { k.Logger.Warn(err.Error()) }