diff --git a/internal/app/cmd/exec.go b/internal/app/cmd/exec.go index 38616bcf..794509ad 100644 --- a/internal/app/cmd/exec.go +++ b/internal/app/cmd/exec.go @@ -12,6 +12,7 @@ import ( "strconv" "strings" + "gitea.com/gitea/act_runner/internal/app/run" "github.com/actions-oss/act-cli/pkg/artifactcache" "github.com/actions-oss/act-cli/pkg/artifacts" "github.com/actions-oss/act-cli/pkg/common" @@ -25,15 +26,6 @@ import ( "golang.org/x/term" ) -type JobLoggerFactoryWithInfoLevel struct{} - -// WithJobLogger implements [runner.JobLoggerFactory]. -func (j *JobLoggerFactoryWithInfoLevel) WithJobLogger() *log.Logger { - jobLogger := log.New() - jobLogger.SetLevel(log.InfoLevel) - return jobLogger -} - type executeArgs struct { runList bool job string @@ -458,7 +450,7 @@ func runExec(ctx context.Context, execArgs *executeArgs) func(cmd *cobra.Command } // TODO GITEA - ctx = runner.WithJobLoggerFactory(ctx, &JobLoggerFactoryWithInfoLevel{}) + ctx = runner.WithJobLoggerFactory(ctx, &run.JobLoggerFactoryWithInfoLevel{}) r, err := runner.New(config) if err != nil { diff --git a/internal/app/run/logging.go b/internal/app/run/logging.go index d0e6d1ca..722abcb8 100644 --- a/internal/app/run/logging.go +++ b/internal/app/run/logging.go @@ -5,20 +5,34 @@ package run import ( "io" + "os" + "gitea.com/gitea/act_runner/internal/pkg/report" log "github.com/sirupsen/logrus" ) -// NullLogger is used to create a new JobLogger to discard logs. This -// will prevent these logs from being logged to the stdout, but -// forward them to the Reporter via its hook. -type NullLogger struct{} +type JobLoggerFactoryWithInfoLevel struct{} -// WithJobLogger creates a new logrus.Logger that will discard all logs. -func (n NullLogger) WithJobLogger() *log.Logger { - logger := log.New() - logger.SetOutput(io.Discard) - logger.SetLevel(log.TraceLevel) - - return logger +// WithJobLogger implements [runner.JobLoggerFactory]. +func (j *JobLoggerFactoryWithInfoLevel) WithJobLogger() *log.Logger { + jobLogger := log.New() + jobLogger.SetLevel(log.InfoLevel) + return jobLogger +} + +type JobLoggerWithReporter struct { + Reporter *report.Reporter + LogToTerminal bool +} + +// WithJobLogger implements [runner.JobLoggerFactory]. +func (j *JobLoggerWithReporter) WithJobLogger() *log.Logger { + jobLogger := log.New() + if j.LogToTerminal { + jobLogger.SetOutput(os.Stdout) + } else { + jobLogger.SetOutput(io.Discard) + } + jobLogger.AddHook(j.Reporter) + return jobLogger } diff --git a/internal/app/run/runner.go b/internal/app/run/runner.go index c9204835..c46dab80 100644 --- a/internal/app/run/runner.go +++ b/internal/app/run/runner.go @@ -7,8 +7,6 @@ import ( "context" "encoding/json" "fmt" - "io" - "os" "path/filepath" "strings" "sync" @@ -29,23 +27,6 @@ import ( "gitea.com/gitea/act_runner/internal/pkg/ver" ) -type JobLoggerFactory struct { - reporter *report.Reporter - logToTerminal bool -} - -// WithJobLogger implements [runner.JobLoggerFactory]. -func (j *JobLoggerFactory) WithJobLogger() *log.Logger { - jobLogger := log.New() - if j.logToTerminal { - jobLogger.SetOutput(os.Stdout) - } else { - jobLogger.SetOutput(io.Discard) - } - jobLogger.AddHook(j.reporter) - return jobLogger -} - // Runner runs the pipeline. type Runner struct { name string @@ -288,7 +269,7 @@ func (r *Runner) run(ctx context.Context, task *runnerv1.Task, reporter *report. reporter.Logf("workflow prepared") // TODO GITEA - ctx = runner.WithJobLoggerFactory(ctx, &JobLoggerFactory{reporter: reporter, logToTerminal: log.IsLevelEnabled(log.DebugLevel)}) + ctx = runner.WithJobLoggerFactory(ctx, &JobLoggerWithReporter{Reporter: reporter, LogToTerminal: log.IsLevelEnabled(log.DebugLevel)}) execErr := executor(ctx) reporter.SetOutputs(job.Outputs)