在qt中重定向,調試信息通常使用qdebug()和其他類似的語句印刷到控制台上。將該輸出重定向到文件可能很有用,尤其是對於跨平台開發。這避免了使用Shell腳本並提供了更一致的解決方案。
自定義消息處理程序
重定向debug輸出,QT提供了QinstallMessageHandler()函數。這使您可以安裝一個自定義消息處理程序,該消息處理程序在打印消息之前對其進行處理。這是一個示例處理程序:
void myMessageOutput(qtmsgtype type,const qmessagelogcontext&context&context,const qString&msg)
{
qbyTearray localmsg = msg.tolocal8bit();
開關(類型){
case qtdebugmsg:
fprintf(stderr,“ debug:%s:%s:%u,%s)\ n”,localmsg.constdata(),context.file,context.file,context.line,context.faction.function);
休息;
案例qtinfomsg:
// ...
案例qtwarningmsg:
// ...
病例QTCriticalMSG:
// ...
case qtfatalmsg:
fprintf(stderr,“致命:%s:%s:%u,%s)\ n”,localmsg.constdata(),context.file,context.line,line,context.faction.function);
aprot();
}
}
此處理程序將消息輸出到stderr,但是您可以用文件流替換stderr來重定向輸出。
在您的MAIN中call qinstallMessageHandler()安裝自定義處理程序,函數:
qinstallMessageHandler(myMessageOutput);
一旦安裝,所有qdebug和類似的消息都將重定向到處理程序,並將其寫入文件,並寫入您指定的文件或流。