github.com/rclone/rclone@v1.66.1-0.20240517100346-7b89735ae726/cmd/bisync/bilib/output.go (about) 1 // Package bilib provides common stuff for bisync and bisync_test 2 package bilib 3 4 import ( 5 "bytes" 6 "log" 7 8 "github.com/rclone/rclone/fs" 9 "github.com/sirupsen/logrus" 10 ) 11 12 // CaptureOutput runs a function capturing its output. 13 func CaptureOutput(fun func()) []byte { 14 logSave := log.Writer() 15 logrusSave := logrus.StandardLogger().Writer() 16 defer func() { 17 err := logrusSave.Close() 18 if err != nil { 19 fs.Errorf(nil, "error closing logrusSave: %v", err) 20 } 21 }() 22 buf := &bytes.Buffer{} 23 log.SetOutput(buf) 24 logrus.SetOutput(buf) 25 fun() 26 log.SetOutput(logSave) 27 logrus.SetOutput(logrusSave) 28 return buf.Bytes() 29 }