mirror of
https://github.com/garethgeorge/backrest.git
synced 2026-09-30 03:45:39 +00:00
36 lines
687 B
Go
36 lines
687 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)
|
|
} else {
|
|
cmd.Stdout = logger
|
|
}
|
|
if cmd.Stderr != nil {
|
|
cmd.Stderr = io.MultiWriter(cmd.Stderr, logger)
|
|
} else {
|
|
cmd.Stderr = logger
|
|
}
|
|
}
|