/** open, write, close the file rather than hold it forever so it can handle having the file deleted from underneath it without failing. */ void LogToFile :: PushItemsToFile() { try { std::ofstream file(mFileName.c_str(), std::ios::app | std::ios::out); if(!file.is_open()) std::cerr << "Failure to open: " << mFileName << std::endl; LogEntry le; while(ReadLog(le)) file << le.LogString() << std::endl; file << std::flush; if(file.bad()) std::cerr << "Failure during writing log file: " << file.rdstate() << std::endl; file.close(); } catch(std::exception e){ std::cerr << "Error during LogToFile: " << e.what() << std::endl; } }
/** open, write, close the file rather than hold it forever so it can handle having the file deleted from underneath it without failing. */ void LogToFile :: PushItemsToFile() { try { // we need to open file in append mode first time only std::ofstream file(mFileName.c_str(), mOverwriteFile ? (std::ios::out) : (std::ios::app | std::ios::out)); if(!file.is_open()) std::cerr << "Failure to open: " << mFileName << std::endl; mOverwriteFile = false; LogEntry le; while(ReadLog(le)) file << le.LogString() << std::endl; file << std::flush; if(file.bad()) std::cerr << "Failure during writing log file: " << file.rdstate() << std::endl; file.close(); } catch(std::exception e) { std::cerr << "Error during LogToFile: " << e.what() << std::endl; } }