Skip to content

Commit 26a725f

Browse files
authored
fix: provisionerd: add more context to logs emitted, fix log level (#6508)
- Previously, we were logging all provision response logs at level INFO, regardless of the log level of the log streamed from the provisioner. We now log these at the original level (defaulting to INFO). - Now logging "provision failed" message at level ERROR WARN and including the error field in the message.
1 parent 8900812 commit 26a725f

File tree

1 file changed

+21
-2
lines changed

1 file changed

+21
-2
lines changed

provisionerd/runner/runner.go

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -880,7 +880,7 @@ func (r *Runner) buildWorkspace(ctx context.Context, stage string, req *sdkproto
880880
}
881881
switch msgType := msg.Type.(type) {
882882
case *sdkproto.Provision_Response_Log:
883-
r.logger.Info(context.Background(), "workspace provision job logged",
883+
r.logProvisionerJobLog(context.Background(), msgType.Log.Level, "workspace provisioner job logged",
884884
slog.F("level", msgType.Log.Level),
885885
slog.F("output", msgType.Log.Output),
886886
slog.F("workspace_build_id", r.job.GetWorkspaceBuild().WorkspaceBuildId),
@@ -895,8 +895,9 @@ func (r *Runner) buildWorkspace(ctx context.Context, stage string, req *sdkproto
895895
})
896896
case *sdkproto.Provision_Response_Complete:
897897
if msgType.Complete.Error != "" {
898-
r.logger.Info(context.Background(), "provision failed; updating state",
898+
r.logger.Warn(context.Background(), "provision failed; updating state",
899899
slog.F("state_length", len(msgType.Complete.State)),
900+
slog.F("error", msgType.Complete.Error),
900901
)
901902

902903
return nil, &proto.FailedJob{
@@ -1120,3 +1121,21 @@ func redactVariableValues(variableValues []*sdkproto.VariableValue) []*sdkproto.
11201121
}
11211122
return redacted
11221123
}
1124+
1125+
// logProvisionerJobLog logs a message from the provisioner daemon at the appropriate level.
1126+
func (r *Runner) logProvisionerJobLog(ctx context.Context, logLevel sdkproto.LogLevel, msg string, fields ...slog.Field) {
1127+
switch logLevel {
1128+
case sdkproto.LogLevel_TRACE:
1129+
r.logger.Debug(ctx, msg, fields...) // There's no trace, so we'll just use debug.
1130+
case sdkproto.LogLevel_DEBUG:
1131+
r.logger.Debug(ctx, msg, fields...)
1132+
case sdkproto.LogLevel_INFO:
1133+
r.logger.Info(ctx, msg, fields...)
1134+
case sdkproto.LogLevel_WARN:
1135+
r.logger.Warn(ctx, msg, fields...)
1136+
case sdkproto.LogLevel_ERROR:
1137+
r.logger.Error(ctx, msg, fields...)
1138+
default: // should never happen, but we should not explode either.
1139+
r.logger.Info(ctx, msg, fields...)
1140+
}
1141+
}

0 commit comments

Comments
 (0)