我想在我的应用程序中生成日志,即无论我在终端窗口或cmd窗口上得到什么,都要在文本文件中生成日志。
例如,我有一个客户端-服务器程序,所以无论我在终端上收到什么消息或警告,都会连同时间戳一起打印在日志文件上。
有什么想法吗,QxtLog或log4Qt和我想要的一样吗?
安装您的Qt消息处理程序。
FILE *fd;
void myMessageOutput(QtMsgType type, const char *msg)
{
QString timeStamp = QTime::currentTime().toString("hh:mm:ss:zzz");
switch (type) {
case QtDebugMsg:
fprintf(fd, "[%s]", timeStamp.toStdString().c_str());
fprintf(fd, "[Debug] %sn", msg);
break;
case QtWarningMsg:
fprintf(fd, "[%s]", timeStamp.toStdString().c_str());
fprintf(fd, "[Warning] %sn", msg);
break;
case QtCriticalMsg:
fprintf(fd, "[%s]", timeStamp.toStdString().c_str());
fprintf(fd, "[Critical] %sn", msg);
break;
case QtFatalMsg:
fprintf(fd, "[%s]", timeStamp.toStdString().c_str());
fprintf(fd, "[Fatal] %sn", msg);
abort();
}
}
int main(int argc, char **argv)
{
fd = fopen("log.txt", "a");
qInstallMsgHandler(myMessageOutput);
QApplication app(argc, argv);
...
return app.exec();
}
一种快速而简单的方法是将软件的输出通过管道传输到一个文件。
对于更复杂的方法,我建议考虑log4cplus(http://sourceforge.net/p/log4cplus/wiki/Home/)-我不知道log4Qt,但我想它可能有类似的接口。
Log4Cplus允许为日志创建不同的通道/优先级,因此您还可以根据重要性筛选输出,根据项目的大小,这可能会很有趣。