예제 #1
0
파일: LogToFile.cpp 프로젝트: emezeske/dnp3
	/** 
	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;
		}
	}
예제 #2
0
/**
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;
	}
}