diff --git a/agent/agent.go b/agent/agent.go index 5ca733f2f5464..53fafe831e30b 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -12,6 +12,7 @@ import ( "os" "os/exec" "os/user" + "path/filepath" "runtime" "strconv" "strings" @@ -21,7 +22,6 @@ import ( "github.com/armon/circbuf" "github.com/google/uuid" - gsyslog "github.com/hashicorp/go-syslog" "go.uber.org/atomic" "cdr.dev/slog" @@ -166,15 +166,9 @@ func (*agent) runStartupScript(ctx context.Context, script string) error { return xerrors.Errorf("get user shell: %w", err) } - var writer io.WriteCloser - // Attempt to use the syslog to write startup information. - writer, err = gsyslog.NewLogger(gsyslog.LOG_INFO, "USER", "coder-startup-script") + writer, err := os.OpenFile(filepath.Join(os.TempDir(), "coder-startup-script.log"), os.O_CREATE|os.O_RDWR, 0600) if err != nil { - // If the syslog isn't supported or cannot be created, use a text file in temp. - writer, err = os.CreateTemp("", "coder-startup-script-*.txt") - if err != nil { - return xerrors.Errorf("open startup script log file: %w", err) - } + return xerrors.Errorf("open startup script log file: %w", err) } defer func() { _ = writer.Close() diff --git a/cli/agent.go b/cli/agent.go index e9220840387e8..238a1e858923b 100644 --- a/cli/agent.go +++ b/cli/agent.go @@ -4,6 +4,8 @@ import ( "context" "net/http" "net/url" + "os" + "path/filepath" "time" "cloud.google.com/go/compute/metadata" @@ -17,6 +19,8 @@ import ( "github.com/coder/coder/cli/cliflag" "github.com/coder/coder/codersdk" "github.com/coder/retry" + + "gopkg.in/natefinch/lumberjack.v2" ) func workspaceAgent() *cobra.Command { @@ -36,7 +40,13 @@ func workspaceAgent() *cobra.Command { if err != nil { return xerrors.Errorf("parse %q: %w", rawURL, err) } - logger := slog.Make(sloghuman.Sink(cmd.OutOrStdout())).Leveled(slog.LevelDebug) + + logWriter := &lumberjack.Logger{ + Filename: filepath.Join(os.TempDir(), "coder-agent.log"), + MaxSize: 5, // MB + } + defer logWriter.Close() + logger := slog.Make(sloghuman.Sink(cmd.ErrOrStderr()), sloghuman.Sink(logWriter)).Leveled(slog.LevelDebug) client := codersdk.New(coderURL) // exchangeToken returns a session token. diff --git a/go.mod b/go.mod index e5eb0c7e84770..af84af81c96df 100644 --- a/go.mod +++ b/go.mod @@ -67,7 +67,6 @@ require ( github.com/golang-migrate/migrate/v4 v4.15.2 github.com/google/go-github/v43 v43.0.1-0.20220414155304-00e42332e405 github.com/google/uuid v1.3.0 - github.com/hashicorp/go-syslog v1.0.0 github.com/hashicorp/go-version v1.4.0 github.com/hashicorp/hc-install v0.3.1 github.com/hashicorp/hcl/v2 v2.12.0 @@ -115,6 +114,7 @@ require ( google.golang.org/api v0.75.0 google.golang.org/protobuf v1.28.0 gopkg.in/DataDog/dd-trace-go.v1 v1.38.0 + gopkg.in/natefinch/lumberjack.v2 v2.0.0 k8s.io/utils v0.0.0-20220210201930-3a6ce19ff2f9 nhooyr.io/websocket v1.8.7 storj.io/drpc v0.0.30 diff --git a/go.sum b/go.sum index 92f4ac0ffb1c6..0aac27f4608f9 100644 --- a/go.sum +++ b/go.sum @@ -97,6 +97,7 @@ github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbt github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= github.com/Azure/go-ntlmssp v0.0.0-20200615164410-66371956d46c h1:/IBSNwUN8+eKzUzbJPqhK839ygXJ82sde8x3ogr6R28= github.com/Azure/go-ntlmssp v0.0.0-20200615164410-66371956d46c/go.mod h1:chxPXzSsl7ZWRAuOIE23GDNzjWuZquvFlgA8xmpunjU= +github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/ClickHouse/clickhouse-go v1.4.3/go.mod h1:EaI/sW7Azgz9UATzd5ZdZHRUhHgv5+JMS9NSr2smCJI= @@ -927,7 +928,6 @@ github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= github.com/hashicorp/go-sockaddr v1.0.2/go.mod h1:rB4wwRAUzs07qva3c5SdrY/NEtAUjGlgmH/UkBUC97A= -github.com/hashicorp/go-syslog v1.0.0 h1:KaodqZuhUoZereWVIYmpUgZysurB1kBLX2j0MwMrUAE= github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= @@ -2516,6 +2516,7 @@ gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.62.0 h1:duBzk771uxoUuOlyRLkHsygud9+5lrlGjdFBb4mSKDU= gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/jinzhu/gorm.v1 v1.9.1/go.mod h1:56JJPUzbikvTVnoyP1nppSkbJ2L8sunqTBDY2fDrmFg= +gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8= gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= gopkg.in/olivere/elastic.v3 v3.0.75/go.mod h1:yDEuSnrM51Pc8dM5ov7U8aI/ToR3PG0llA8aRv2qmw0= gopkg.in/olivere/elastic.v5 v5.0.84/go.mod h1:LXF6q9XNBxpMqrcgax95C6xyARXWbbCXUrtTxrNrxJI=