feat: parameter to write per-run logs to directory
This commit is contained in:
		
							
								
								
									
										30
									
								
								cmd/pew.go
									
									
									
									
									
								
							
							
						
						
									
										30
									
								
								cmd/pew.go
									
									
									
									
									
								
							@@ -12,6 +12,7 @@ import (
 | 
			
		||||
	"math/rand"
 | 
			
		||||
	"os"
 | 
			
		||||
	"os/exec"
 | 
			
		||||
	"path/filepath"
 | 
			
		||||
	"strings"
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
@@ -90,6 +91,8 @@ type PewCmd struct {
 | 
			
		||||
	OutputOnSuccess bool `help:"show output on success"`
 | 
			
		||||
	RealtimeOutput  bool `help:"show realtime output"`
 | 
			
		||||
 | 
			
		||||
	LogDir string `help:"write logs to directory"`
 | 
			
		||||
 | 
			
		||||
	Endless        bool          `help:"endless tests"`
 | 
			
		||||
	EndlessTimeout time.Duration `help:"timeout between tests" default:"1m"`
 | 
			
		||||
	EndlessStress  string        `help:"endless stress script" type:"existingfile"`
 | 
			
		||||
@@ -403,7 +406,9 @@ func (cmd PewCmd) testArtifact(swg *sizedwaitgroup.SizedWaitGroup,
 | 
			
		||||
 | 
			
		||||
	defer swg.Done()
 | 
			
		||||
 | 
			
		||||
	logdir := "logs/" + cmd.Tag
 | 
			
		||||
	var logDirWriter *zerolog.ConsoleWriter
 | 
			
		||||
	if cmd.LogDir != "" {
 | 
			
		||||
		logdir := filepath.Join(cmd.LogDir, cmd.Tag)
 | 
			
		||||
		err := os.MkdirAll(logdir, os.ModePerm)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			log.Error().Err(err).Msgf("mkdir %s", logdir)
 | 
			
		||||
@@ -423,19 +428,32 @@ func (cmd PewCmd) testArtifact(swg *sizedwaitgroup.SizedWaitGroup,
 | 
			
		||||
		}
 | 
			
		||||
		defer f.Close()
 | 
			
		||||
 | 
			
		||||
	slog := zerolog.New(zerolog.MultiLevelWriter(
 | 
			
		||||
		&ConsoleWriter,
 | 
			
		||||
		&FileWriter,
 | 
			
		||||
		&zerolog.ConsoleWriter{
 | 
			
		||||
		logDirWriter = &zerolog.ConsoleWriter{
 | 
			
		||||
			Out: f,
 | 
			
		||||
			FieldsExclude: []string{
 | 
			
		||||
				"distro_release",
 | 
			
		||||
				"distro_type",
 | 
			
		||||
				"kernel",
 | 
			
		||||
				"command",
 | 
			
		||||
				"workdir",
 | 
			
		||||
			},
 | 
			
		||||
			NoColor: true,
 | 
			
		||||
		},
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	var slog zerolog.Logger
 | 
			
		||||
	if logDirWriter != nil {
 | 
			
		||||
		slog = zerolog.New(zerolog.MultiLevelWriter(
 | 
			
		||||
			&ConsoleWriter,
 | 
			
		||||
			&FileWriter,
 | 
			
		||||
			logDirWriter,
 | 
			
		||||
		))
 | 
			
		||||
	} else {
 | 
			
		||||
		slog = zerolog.New(zerolog.MultiLevelWriter(
 | 
			
		||||
			&ConsoleWriter,
 | 
			
		||||
			&FileWriter,
 | 
			
		||||
		))
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	switch LogLevel {
 | 
			
		||||
	case zerolog.TraceLevel, zerolog.DebugLevel:
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user