各位下午好
我正在开发一个在 Visual Studio 2008 中使用 Qt 库的项目。在这个项目中,我使用的 log4cxx 0.10.0 运行良好。但是,我无法让它显示在(这个项目)控制台中。我相信原因与它是一个 win32 应用程序有关。
任何熟悉 log4j(cxx) 的人都知道有一个要配置的属性文件。
在该文件中,我将其写入控制台,但没有显示任何内容。.cmd 不会像我写的其他程序一样弹出,也不会像 qDebug() 那样显示在 VS 控制台中。
关于如何解决这个问题的任何想法?
各位下午好
我正在开发一个在 Visual Studio 2008 中使用 Qt 库的项目。在这个项目中,我使用的 log4cxx 0.10.0 运行良好。但是,我无法让它显示在(这个项目)控制台中。我相信原因与它是一个 win32 应用程序有关。
任何熟悉 log4j(cxx) 的人都知道有一个要配置的属性文件。
在该文件中,我将其写入控制台,但没有显示任何内容。.cmd 不会像我写的其他程序一样弹出,也不会像 qDebug() 那样显示在 VS 控制台中。
关于如何解决这个问题的任何想法?
QDebug可能正在写入stderr, whileprintf或您的日志功能仅连接到stdout.
您有两种不同的方式来显示 Visual Studio 中的黑色控制台/终端窗口:
在开始打印到控制台之前,在程序中的某处添加以下内容:
#include <stdio.h>
// ...
AllocConsole();
freopen("conin$","r",stdin);
freopen("conout$","w",stdout);
freopen("conout$","w",stderr);
// printf("Debugging Window:\n");
或者您可以告诉 Visual Studio 您正在编写一个控制台程序并为您制作一个。
项目 > 属性 > 配置属性 > 链接器 > 系统 > 子系统
(这是在 VS 2010 中找到设置的导航,对于 VS 2008 可能有点不同)
从 更改Windows (/SUBSYSTEM:WINDOWS)为Console (/SUBSYSTEM:CONSOLE)。
stderr或stdout或者您可以尝试的第三种选择是让您的日志记录打印到stderr,就像QDebug.
http://cboard.cprogramming.com/c-programming/26852-stderr-vs-stdout.html
FILE *myerr = freopen("error.log", "wb", stderr);
希望有帮助。