将 stdout 和 stderr 重定向到 C++ 中的文件
Redirecting stdout and stderr to a file in c++
我正在尝试将 stdout 和 stderr 重定向到日志文件。
/* Redirecting stderr buffer to stdout */
dup2(fileno(stdout), fileno(stderr));
/* Redirecting stdout buffer to logfile */
if((LogStream = freopen(LogPath.c_str(), "w", stdout)) == NULL)
{
cout << "Failed to redirect console logs\n";
}
.
.
. //other code
.
.
fclose(LogStream);
LogStream = freopen (NULL_LOG, "w", stdout);
这就是我正在做的。但我仍然遗漏了一些日志。我开始知道,当我执行我的应用程序时,注释掉了这些代码行。我对这个代码片段持怀疑态度。请提供您对此的反馈。
首先关闭stdout和stderr
close(STDOUT_FILENO);
close(STDERR_FILENO)
打开新文件写入日志。
int file = open( "logfile", O_CREAT | O_RDWR, 0644 );
复制日志文件文件描述符以与 stdout 和 stderr 一起使用。见 man dup2
dup2( file, STDOUT_FILENO);
dup2( file, STDERR_FILENO);
希望以上代码对你有帮助..
我正在尝试将 stdout 和 stderr 重定向到日志文件。
/* Redirecting stderr buffer to stdout */
dup2(fileno(stdout), fileno(stderr));
/* Redirecting stdout buffer to logfile */
if((LogStream = freopen(LogPath.c_str(), "w", stdout)) == NULL)
{
cout << "Failed to redirect console logs\n";
}
.
.
. //other code
.
.
fclose(LogStream);
LogStream = freopen (NULL_LOG, "w", stdout);
这就是我正在做的。但我仍然遗漏了一些日志。我开始知道,当我执行我的应用程序时,注释掉了这些代码行。我对这个代码片段持怀疑态度。请提供您对此的反馈。
首先关闭stdout和stderr
close(STDOUT_FILENO);
close(STDERR_FILENO)
打开新文件写入日志。
int file = open( "logfile", O_CREAT | O_RDWR, 0644 );
复制日志文件文件描述符以与 stdout 和 stderr 一起使用。见 man dup2
dup2( file, STDOUT_FILENO);
dup2( file, STDERR_FILENO);
希望以上代码对你有帮助..