mirror of
https://github.com/garethgeorge/backrest.git
synced 2025-12-14 09:35:41 +00:00
32 lines
623 B
Go
32 lines
623 B
Go
package restic
|
|
|
|
import (
|
|
"context"
|
|
"io"
|
|
"os/exec"
|
|
)
|
|
|
|
var loggerKey = struct{}{}
|
|
|
|
func ContextWithLogger(ctx context.Context, logger io.Writer) context.Context {
|
|
return context.WithValue(ctx, loggerKey, logger)
|
|
}
|
|
|
|
func LoggerFromContext(ctx context.Context) io.Writer {
|
|
writer, _ := ctx.Value(loggerKey).(io.Writer)
|
|
return writer
|
|
}
|
|
|
|
func addLoggingToCommand(ctx context.Context, cmd *exec.Cmd) {
|
|
logger := LoggerFromContext(ctx)
|
|
if logger == nil {
|
|
return
|
|
}
|
|
if cmd.Stdout != nil {
|
|
cmd.Stdout = io.MultiWriter(cmd.Stdout, logger)
|
|
}
|
|
if cmd.Stderr != nil {
|
|
cmd.Stderr = io.MultiWriter(cmd.Stderr, logger)
|
|
}
|
|
}
|