使用log4cxx与Qt库

Using log4cxx with a Qt library

本文关键字:Qt log4cxx 使用      更新时间:2023-10-16

大家下午好

我正在做一个在Visual Studio 2008中使用Qt库的项目。在这个项目中,我使用log4cxx 0.10.0,它工作得很好。然而,我无法让它显示在(这个项目)控制台。我相信这是因为它是一个win32应用程序。

熟悉log4j(cxx)的人都知道有一个属性文件要配置。

在该文件中,我将其写入控制台,但没有显示任何内容。cmd不会像我写的其他程序那样弹出,也不会像qDebug()那样显示在VS控制台中。

关于如何去解决这个问题有什么想法吗?

QDebug可能正在写入stderr,而printf或您的日志功能仅连接到stdout

在Visual Studio中显示控制台

在Visual Studio中有两种不同的方式来显示黑色控制台/终端窗口:

一:Visual c++ Enable Console

在开始打印到控制台之前,在程序的某个地方添加以下内容:

#include <stdio.h>
// ...
AllocConsole();
freopen("conin$","r",stdin);
freopen("conout$","w",stdout);
freopen("conout$","w",stderr);
// printf("Debugging Window:n");

或者你可以告诉Visual Studio你正在写一个控制台程序,并为你制作一个。

在VS2010中调试Win32 MFC应用程序时显示控制台窗口

项目>属性>配置属性>链接器>系统>子系统

(这是在VS 2010中找到设置的导航,它可能与VS 2008略有不同)

Windows (/SUBSYSTEM:WINDOWS)Console (/SUBSYSTEM:CONSOLE)

重定向stderrstdout

或者您可以尝试的第三个选项是将日志记录打印到stderr,就像QDebug一样。

http://cboard.cprogramming.com/c-programming/26852-stderr-vs-stdout.html

FILE *myerr = freopen("error.log", "wb", stderr);

希望对你有帮助。