MBASEAPI void MIRACLEEXPORT logErrorVA(LPCTSTR lpszFormat,...) { CString msg; ASSERT(AfxIsValidString(lpszFormat)); va_list argList; va_start(argList, lpszFormat); msg.FormatV(lpszFormat, argList); va_end(argList); _logError(msg); }
//////////////////////////////////////////////////////////////////////////////// // Writes message to file. // Implementation of this function is platform specific // // Note: The current implementation writes the message to the defined file. // Will have to be enhanced to support synchronous write operations to // the same file. //////////////////////////////////////////////////////////////////////////////// void TraceFileHandler::handleMessage( const char* message, Uint32, const char* fmt, va_list argList) { Uint32 retCode; if (_configHasChanged) { _reConfigure(); } if (!_fileHandle) { // The trace file is not open, which means an earlier fopen() was // unsuccessful. Stop now to avoid logging duplicate error messages. return; } AutoMutex writeLock(writeMutex); if(!_fileExists(_fileName)) { return; } //Move to the End of File fseek(_fileHandle,0,SEEK_SET); // Write message to file fprintf(_fileHandle,"%s", message); vfprintf(_fileHandle,fmt,argList); retCode = fprintf(_fileHandle,"\n"); if (retCode < 0) { // Unable to write message to file // Log message MessageLoaderParms parm( "Common.TraceFileHandlerWindows.UNABLE_TO_WRITE_TRACE_TO_FILE", "Unable to write trace message to File $0", _fileName); _logError(TRCFH_UNABLE_TO_WRITE_TRACE_TO_FILE,parm); } else { fflush(_fileHandle); // trace message successful written, reset error log messages // thus allow writing of errors to log again _logErrorBitField = 0; } }
MBASEAPI void MIRACLEEXPORT logError(LPCTSTR lpszMsg) { ASSERT(AfxIsValidString(lpszMsg)); _logError(lpszMsg); }
MBASEAPI void MIRACLEEXPORT logError(UINT nID) { CString msg; msg.LoadString(nID); _logError(msg); }