将标准错误重定向到文件和标准输出



我想将stderr重定向到文件并重定向到stdout

我知道如何使用dup2重定向stderr到文件:
err := syscall.Dup2(int(fatal_logfile.Fd()), int(os.Stderr.Fd()))

但是我不知道如何将这个重定向到stdout。就像"复制"一个流源到两个不同的流。

请注意,此功能在应用程序启动时调用,并用于在panic发生时重定向stderr。那么在这种情况下,我不能使用recover(即使因为我运行了很多例程)。

谁知道怎么解决这个问题?


另一个工作的解决方案是使用pipestee时调用二进制,但有可能有相同的行为/逻辑内定义的应用程序?我希望它以这种方式作为默认运行。

./app_bin 2> >(tee -a fatal.log)

writer := io.MultiWriter(os.Stdout, os.Stderr)

写入writer的内容将写入os.Stdoutos.Stderr

相关内容

  • 没有找到相关文章