将终端上的所有消息和警告打印到文件中



我想在我的应用程序中生成日志,即无论我在终端窗口或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允许为日志创建不同的通道/优先级,因此您还可以根据重要性筛选输出,根据项目的大小,这可能会很有趣。

最新更新