将 Exec 输出复制到 Go 中的日志
在 Go 中,将长时间运行或未完成的进程的输出重定向到日志可能具有挑战性。在等待进程完成时可以进行简单的输出捕获,但非终端环境中的实时日志记录需要不同的方法。
一种解决方案涉及创建一个管道以将进程的标准输出连接到缓冲扫描仪:
stdout, err := cmd.StdoutPipe() if err != nil { return 0, err } // start the command after having set up the pipe if err := cmd.Start(); err != nil { return 0, err } // read command's stdout line by line in := bufio.NewScanner(stdout) for in.Scan() { log.Printf(in.Text()) // write each line to your log, or anything you need } if err := in.Err(); err != nil { log.Printf("error: %s", err) }
此代码创建一个标准输出管道,启动命令,然后使用扫描器逐行读取输出。然后可以根据需要记录或处理每一行。通过以这种方式处理 Stdout,您可以在进程仍在运行时将进程的输出重定向到日志,确保及时记录服务的重要信息。
以上是如何将 Exec 输出重定向到 Go 中的日志?的详细内容。更多信息请关注PHP中文网其他相关文章!