From aa12057ec995515373ef39c407ee976be72b7472 Mon Sep 17 00:00:00 2001 From: defelmnq Date: Fri, 8 Nov 2024 00:04:03 +0000 Subject: [PATCH 1/4] add lumberjack to rotate coderd logs --- cli/clilog/clilog.go | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/cli/clilog/clilog.go b/cli/clilog/clilog.go index 98924f3e86239..2ba5f24f97eb6 100644 --- a/cli/clilog/clilog.go +++ b/cli/clilog/clilog.go @@ -4,11 +4,11 @@ import ( "context" "fmt" "io" - "os" "regexp" "strings" "golang.org/x/xerrors" + "gopkg.in/natefinch/lumberjack.v2" "cdr.dev/slog" "cdr.dev/slog/sloggers/sloghuman" @@ -112,13 +112,17 @@ func (b *Builder) Build(inv *serpent.Invocation) (log slog.Logger, closeLog func sinks = append(sinks, sinkFn(inv.Stderr)) default: - fi, err := os.OpenFile(loc, os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0o644) - if err != nil { - return xerrors.Errorf("open log file %q: %w", loc, err) + logWriter := &lumberjack.Logger{ + Filename: loc, + MaxSize: 5, // MB + // Without this, rotated logs will never be deleted. + MaxBackups: 1, } - closers = append(closers, fi.Close) - sinks = append(sinks, sinkFn(fi)) + closers = append(closers, logWriter.Close) + sinks = append(sinks, sinkFn(logWriter)) + } + return nil } From aceb50b340872bc2969b4f9482bd4a5730d7565d Mon Sep 17 00:00:00 2001 From: defelmnq Date: Tue, 12 Nov 2024 14:57:27 +0100 Subject: [PATCH 2/4] remove not relevant test --- cli/clilog/clilog_test.go | 25 ------------------------- 1 file changed, 25 deletions(-) diff --git a/cli/clilog/clilog_test.go b/cli/clilog/clilog_test.go index 31d1dcfab26cd..9069c08aa4a16 100644 --- a/cli/clilog/clilog_test.go +++ b/cli/clilog/clilog_test.go @@ -2,7 +2,6 @@ package clilog_test import ( "encoding/json" - "io/fs" "os" "path/filepath" "strings" @@ -145,30 +144,6 @@ func TestBuilder(t *testing.T) { assertLogsJSON(t, tempJSON, info, infoLog, warn, warnLog) }) }) - - t.Run("NotFound", func(t *testing.T) { - t.Parallel() - - tempFile := filepath.Join(t.TempDir(), "doesnotexist", "test.log") - cmd := &serpent.Command{ - Use: "test", - Handler: func(inv *serpent.Invocation) error { - logger, closeLog, err := clilog.New( - clilog.WithFilter("foo", "baz"), - clilog.WithHuman(tempFile), - clilog.WithVerbose(), - ).Build(inv) - if err != nil { - return err - } - defer closeLog() - logger.Error(inv.Context(), "you will never see this") - return nil - }, - } - err := cmd.Invoke().Run() - require.ErrorIs(t, err, fs.ErrNotExist) - }) } var ( From b0191f231c1ddd4f9961cec1f9e08fec28dd7ea8 Mon Sep 17 00:00:00 2001 From: defelmnq Date: Tue, 12 Nov 2024 15:07:51 +0100 Subject: [PATCH 3/4] lint --- cli/clilog/clilog.go | 1 - 1 file changed, 1 deletion(-) diff --git a/cli/clilog/clilog.go b/cli/clilog/clilog.go index 2ba5f24f97eb6..ff1fd6a98936f 100644 --- a/cli/clilog/clilog.go +++ b/cli/clilog/clilog.go @@ -104,7 +104,6 @@ func (b *Builder) Build(inv *serpent.Invocation) (log slog.Logger, closeLog func addSinkIfProvided := func(sinkFn func(io.Writer) slog.Sink, loc string) error { switch loc { case "": - case "/dev/stdout": sinks = append(sinks, sinkFn(inv.Stdout)) From f2afcedb37c8709ebfd711223022a8b51fa018d9 Mon Sep 17 00:00:00 2001 From: defelmnq Date: Tue, 12 Nov 2024 15:34:26 +0100 Subject: [PATCH 4/4] lint --- cli/clilog/clilog.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/cli/clilog/clilog.go b/cli/clilog/clilog.go index ff1fd6a98936f..33851155a5415 100644 --- a/cli/clilog/clilog.go +++ b/cli/clilog/clilog.go @@ -119,9 +119,7 @@ func (b *Builder) Build(inv *serpent.Invocation) (log slog.Logger, closeLog func } closers = append(closers, logWriter.Close) sinks = append(sinks, sinkFn(logWriter)) - } - return nil }