2014-04-10 7 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

각 메시지 다음에 버퍼링 된 출력을 사용하므로 잠재적으로 파일 업데이트를 볼 수 있어야합니다 (데이터가 OS에 기록되기 때문에). 가능한 이유는 OS가 내부 파일 버퍼를 디스크로 플러시하지 않는다는 이유입니다. 시도해보십시오 _commit function on Windows 또는 fsync on Linux

+0

답변을 주셔서 감사합니다 AlexT, 내가 완전히 BB10 플랫폼을 다루고 있다는 사실을 감안할 때 주어진 솔루션을 이해하고 있는지 확신하지 못하겠습니까? Windows에서 _commit 함수의 예를 들어 줄 수 있다고 생각합니까? 또는 주어진 bb10 플랫폼에서 Linux의 fsync? 감사합니다 –

+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