bool ELog::openFile( const string& fileName )
{
+bool isAlreadyOpen = false;
if( isOpen() )
{
+ isAlreadyOpen = true;
closeFile() ;
}
logFile = true ;
-outFile.open( fileName.c_str(), std::ios::out | std::ios::trunc ) ;
+if (isAlreadyOpen)
+ outFile.open( fileName.c_str(), std::ios::out | std::ios::app ) ;
+else
+ outFile.open( fileName.c_str(), std::ios::out | std::ios::trunc ) ;
if( !isOpen() )
{
<< endl ;
}
-void xServer::startLogging()
+void xServer::startLogging(bool logrotate)
{
if( doDebug )
{
if( logSocket )
{
- socketFile.open( socketFileName.c_str(), std::ios::out ) ;
+ if (logrotate)
+ socketFile.open( socketFileName.c_str(), std::ios::out | std::ios::app) ;
+ else
+ socketFile.open( socketFileName.c_str(), std::ios::out ) ;
if( !socketFile.is_open() )
{
clog << "*** Unable to open socket log file: "
if (elog.isOpen())
{
elog << endl << "Received SIGHUP. Rotating log files..." << endl;
- elog.closeFile();
+ //elog.closeFile(); /* Do not close the file, elog.openFile() will handle that.
}
if( logSocket && socketFile.is_open() )
{
socketFile.close() ;
}
-startLogging();
+startLogging(true);
}
void xServer::run()