正如我在评论部分中所述,可以使用MultiWriter来实现
package mainimport ( "io" "log" "os" "os/exec")func main() { // Logging capability f, err := os.OpenFile("log.log", os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666) if err != nil { log.Fatalf("Error opening file: %v", err) } defer f.Close() mwriter := io.MultiWriter(f, os.Stdout) cmd := exec.Command("ls") cmd.Stderr = mwriter cmd.Stdout = mwriter err = cmd.Run() //blocks until sub process is complete if err != nil { panic(err) }}在声明命令时以及在运行命令之前,只需指定Stdout和Stderr使用上面定义的MultiWriter。该MultiWriter实例包含一个日志文件和标准输出。



