From 6b059572ff51e30f4cfbde76cc7b82af313967b6 Mon Sep 17 00:00:00 2001 From: Markus Wolf Date: Mon, 14 Mar 2022 18:38:30 +0100 Subject: [PATCH] feat: add step name to logger field (#1027) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: add step name to logger field This change does add the step name to the logger fields. This does not change the output for our users, but for the json logger, it does make each step output traceable. * fix: remove new logger Since logrus and context both are immutable for our case, we can just add a new field and store the logger in the context. Co-authored-by: Casey Lee Co-authored-by: Björn Brauer --- pkg/runner/job_executor.go | 21 ++++++++++++--------- pkg/runner/logger.go | 5 +++++ 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/pkg/runner/job_executor.go b/pkg/runner/job_executor.go index 3d86a8e..0c8cdb4 100644 --- a/pkg/runner/job_executor.go +++ b/pkg/runner/job_executor.go @@ -37,15 +37,18 @@ func newJobExecutor(info jobInfo) common.Executor { } stepExec := info.newStepExecutor(step) steps = append(steps, func(ctx context.Context) error { - err := stepExec(ctx) - if err != nil { - common.Logger(ctx).Errorf("%v", err) - common.SetJobError(ctx, err) - } else if ctx.Err() != nil { - common.Logger(ctx).Errorf("%v", ctx.Err()) - common.SetJobError(ctx, ctx.Err()) - } - return nil + stepName := step.String() + return (func(ctx context.Context) error { + err := stepExec(ctx) + if err != nil { + common.Logger(ctx).Errorf("%v", err) + common.SetJobError(ctx, err) + } else if ctx.Err() != nil { + common.Logger(ctx).Errorf("%v", ctx.Err()) + common.SetJobError(ctx, ctx.Err()) + } + return nil + })(withStepLogger(ctx, stepName)) }) } diff --git a/pkg/runner/logger.go b/pkg/runner/logger.go index 7949b4b..348f185 100644 --- a/pkg/runner/logger.go +++ b/pkg/runner/logger.go @@ -72,6 +72,11 @@ func WithJobLogger(ctx context.Context, jobName string, config *Config, masks *[ return common.WithLogger(ctx, rtn) } +func withStepLogger(ctx context.Context, stepName string) context.Context { + rtn := common.Logger(ctx).WithFields(logrus.Fields{"step": stepName}) + return common.WithLogger(ctx, rtn) +} + type entryProcessor func(entry *logrus.Entry) *logrus.Entry func valueMasker(insecureSecrets bool, secrets map[string]string, masks *[]string) entryProcessor {