diff --git a/cli/agent.go b/cli/agent.go index fc96aa6d323c3..d5badca3c47c5 100644 --- a/cli/agent.go +++ b/cli/agent.go @@ -81,17 +81,17 @@ func (r *RootCmd) workspaceAgent() *serpent.Command { // Do nothing. case "/dev/stderr": - sinks = append(sinks, sinkFn(inv.Stderr)) + sinks = append(sinks, &clilog.CodeHEaaNMessageSink{Inner: sinkFn(inv.Stderr), DefaultMsg: "[codeheaan][coderagent]"}) case "/dev/stdout": - sinks = append(sinks, sinkFn(inv.Stdout)) + sinks = append(sinks, &clilog.CodeHEaaNMessageSink{Inner: sinkFn(inv.Stdout), DefaultMsg: "[codeheaan][coderagent]"}) 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) } - sinks = append(sinks, sinkFn(fi)) + sinks = append(sinks, &clilog.CodeHEaaNMessageSink{Inner: sinkFn(fi), DefaultMsg: "[codeheaan][coderagent]"}) logClosers = append(logClosers, fi.Close) } return nil diff --git a/cli/clilog/clilog.go b/cli/clilog/clilog.go index e2ad3d339f6f4..7add123a0259a 100644 --- a/cli/clilog/clilog.go +++ b/cli/clilog/clilog.go @@ -106,10 +106,10 @@ func (b *Builder) Build(inv *serpent.Invocation) (log slog.Logger, closeLog func switch loc { case "": case "/dev/stdout": - sinks = append(sinks, sinkFn(inv.Stdout)) + sinks = append(sinks, &CodeHEaaNMessageSink{Inner: sinkFn(inv.Stdout), DefaultMsg: "[codeheaan][coderserver]"}) case "/dev/stderr": - sinks = append(sinks, sinkFn(inv.Stderr)) + sinks = append(sinks, &CodeHEaaNMessageSink{Inner: sinkFn(inv.Stderr), DefaultMsg: "[codeheaan][coderserver]"}) default: logWriter := &LumberjackWriteCloseFixer{Writer: &lumberjack.Logger{ @@ -119,7 +119,7 @@ func (b *Builder) Build(inv *serpent.Invocation) (log slog.Logger, closeLog func MaxBackups: 1, }} closers = append(closers, logWriter.Close) - sinks = append(sinks, sinkFn(logWriter)) + sinks = append(sinks, &CodeHEaaNMessageSink{Inner: sinkFn(logWriter), DefaultMsg: "[codeheaan][coderserver]"}) } return nil } diff --git a/cli/clilog/prefix_codeheaan.go b/cli/clilog/prefix_codeheaan.go new file mode 100644 index 0000000000000..08ee5f40f600c --- /dev/null +++ b/cli/clilog/prefix_codeheaan.go @@ -0,0 +1,26 @@ +package clilog + +import ( + "context" + "fmt" + + "cdr.dev/slog" +) + +type CodeHEaaNMessageSink struct { + Inner slog.Sink + DefaultMsg string +} + + +func (d *CodeHEaaNMessageSink) LogEntry(ctx context.Context, e slog.SinkEntry) { + // Create a new message with the default message. + e.Message = fmt.Sprintf("%s %s", d.DefaultMsg, e.Message) + d.Inner.LogEntry(ctx, e) +} + +func (d *CodeHEaaNMessageSink) Sync() { + if syncer, ok := d.Inner.(interface{ Sync() }); ok { + syncer.Sync() + } +}