2014-04-10 15 views
0

我遇到了一些問題,例如在請求,消息,響應等應用程序信息中記錄了一些信息,並且在這段代碼中發生了這種情況。我的目標是在應用程序運行時查看日誌文件,該文件現在似乎不會發生,因此用戶必須退出應用程序,然後轉到公用文件夾才能查看日誌。如果需要,我可以提供更多信息。日誌文件不可見,除非用戶退出應用程序

void LogClass::log(const char* pcszComponent, const char* pcszLevel, const CF1String& title, const CF1String& message) 
    { 
     m_guard.lock(); 

     QByteArray byteArray(QTime::currentTime().toString("HH:mm:ss.zzz").toAscii()); 
     XXString logMessage = XXFormatString("[%s] [%7s] [%4s] [%08X] [%s] [%s]\r\n", byteArray.constData(), pcszLevel, pcszComponent, QThread::currentThreadId(), title.c_str(), message.c_str()); 

     if (!m_pLogFile) { 
      createLogFile(); 
     } 

     if (m_pLogFile) { 
      fputs(logMessage.c_str(), m_pLogFile); 
      fflush(m_pLogFile); 
     } 

     m_guard.unlock(); 
    } 

在此先感謝。

回答

1

在每條消息之後,您正在使用帶有fflush的緩衝輸出,因此您應該能夠看到文件更新(因爲數據已寫入操作系統)。你沒有看到它的可能原因是操作系統不會將其內部文件緩衝區刷新到磁盤。您可以試試_commit function on Windowsfsync on Linux

+0

感謝AlexT的回答,我不確定我完全理解給定的解決方案,因爲我正在處理BB10平臺,您認爲您可以給我一個Windows上_commit函數的示例或Linux上的fsync在給定的bb10平臺? 謝謝 –

+0

@MRMido我沒有和BB10或QNX一起工作,但我發現QNX有[fsync](http://www.qnx.com/developers/docs/6.3.0SP3/neutrino/lib_ref/f/ fsync.html),所以你可以把它稱爲'fsync(fileno(m_pLogFile))' – AlexT

相關問題