From 35548044b73237ac83df9832a9931c7a67b38a86 Mon Sep 17 00:00:00 2001 From: Marcin Tojek Date: Fri, 24 Mar 2023 12:16:55 +0100 Subject: [PATCH 1/3] Process debug mode logs --- coderd/provisionerjobs.go | 3 ++- provisioner/terraform/executor.go | 22 +++++++++++++++++++++- provisioner/terraform/provision.go | 1 + 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/coderd/provisionerjobs.go b/coderd/provisionerjobs.go index 50915e1fe4042..40089b32bd450 100644 --- a/coderd/provisionerjobs.go +++ b/coderd/provisionerjobs.go @@ -347,7 +347,8 @@ func (api *API) followProvisionerJobLogs(actor rbac.Subject, jobID uuid.UUID) (< logger := api.Logger.With(slog.F("job_id", jobID)) var ( - bufferedLogs = make(chan *database.ProvisionerJobLog, 128) + // With debug logging enabled length = 128 is insufficient + bufferedLogs = make(chan *database.ProvisionerJobLog, 1024) endOfLogs atomic.Bool lastSentLogID atomic.Int64 ) diff --git a/provisioner/terraform/executor.go b/provisioner/terraform/executor.go index 1430233b547fa..5cdc67cfe6d37 100644 --- a/provisioner/terraform/executor.go +++ b/provisioner/terraform/executor.go @@ -460,7 +460,27 @@ func readAndLog(sink logSink, r io.Reader, done chan<- any, level proto.LogLevel defer close(done) scanner := bufio.NewScanner(r) for scanner.Scan() { - sink.Log(&proto.Log{Level: level, Output: scanner.Text()}) + var log terraformProvisionLog + err := json.Unmarshal(scanner.Bytes(), &log) + if err != nil { + if strings.TrimSpace(scanner.Text()) == "" { + continue + } + + sink.Log(&proto.Log{Level: level, Output: scanner.Text()}) + continue + } + + logLevel := convertTerraformLogLevel(log.Level, sink) + if logLevel == proto.LogLevel_TRACE { + continue // skip TRACE log entries as they produce a lot of noise + } + + // Degrade JSON log entries marked as INFO as these are logs produced in debug mode. + if logLevel == proto.LogLevel_INFO { + logLevel = proto.LogLevel_DEBUG + } + sink.Log(&proto.Log{Level: logLevel, Output: log.Message}) } } diff --git a/provisioner/terraform/provision.go b/provisioner/terraform/provision.go index 2bc32a1ddd562..b994ccf525a38 100644 --- a/provisioner/terraform/provision.go +++ b/provisioner/terraform/provision.go @@ -236,6 +236,7 @@ func provisionEnv(config *proto.Provision_Config, params []*proto.ParameterValue for _, gitAuth := range gitAuth { env = append(env, provider.GitAuthAccessTokenEnvironmentVariable(gitAuth.Id)+"="+gitAuth.AccessToken) } + env = append(env, "TF_LOG=JSON") // FIXME Remove before pushing PR return env, nil } From 5d55076b6878224c54925f663a17c8f5d6df5722 Mon Sep 17 00:00:00 2001 From: Marcin Tojek Date: Fri, 24 Mar 2023 12:30:11 +0100 Subject: [PATCH 2/3] Debug logs are grey --- site/src/components/Logs/Logs.tsx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/site/src/components/Logs/Logs.tsx b/site/src/components/Logs/Logs.tsx index 685be552c24b2..c85c47e5d5cde 100644 --- a/site/src/components/Logs/Logs.tsx +++ b/site/src/components/Logs/Logs.tsx @@ -108,7 +108,11 @@ const useStyles = makeStyles< backgroundColor: theme.palette.error.dark, }, - "&.warning": { + "&.debug": { + backgroundColor: theme.palette.grey[900], + }, + + "&.warn": { backgroundColor: theme.palette.warning.dark, }, }, From 3572c49169bed3261e1c0ed20f7037b0ee1289f4 Mon Sep 17 00:00:00 2001 From: Marcin Tojek Date: Fri, 24 Mar 2023 12:41:01 +0100 Subject: [PATCH 3/3] Fix --- provisioner/terraform/provision.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/provisioner/terraform/provision.go b/provisioner/terraform/provision.go index b994ccf525a38..64fdc3ca07a14 100644 --- a/provisioner/terraform/provision.go +++ b/provisioner/terraform/provision.go @@ -236,7 +236,7 @@ func provisionEnv(config *proto.Provision_Config, params []*proto.ParameterValue for _, gitAuth := range gitAuth { env = append(env, provider.GitAuthAccessTokenEnvironmentVariable(gitAuth.Id)+"="+gitAuth.AccessToken) } - env = append(env, "TF_LOG=JSON") // FIXME Remove before pushing PR + // FIXME env = append(env, "TF_LOG=JSON") return env, nil }