将控制台输出/第三方模块的错误重定向到日志文件

时间:2014-01-06 11:38:03

标签: c++

在我的c ++应用程序中,我正在调用一些其他第三方API来生成控制台输出/错误消息。我想将所有这些消息重定向到我的应用程序的日志,以便用户的屏幕只显示我的应用程序的消息,并且没有填充来自第三方模块的无关消息。 有没有办法这样做。我不确定,但第三方API正在使用c / c + _ libraries

由于 Ruchi

1 个答案:

答案 0 :(得分:0)

如果您自己不使用标准输出文件描述符,则可以执行以下操作:

  int newout = dup(1);
  int log = open("./my.log", O_RDWR|O_CREAT, 777);
  dup2 (log, 1);

现在标准输出(描述符1)转到“./my.log”,新的文件描述符转到以前的标准输出。

如果您使用Unix低级别IO(例如write(2)),则可以直接使用newout。如果你使用C stdio,fdopen(3)它。如果您更喜欢C ++流,请查看at this question and its answers