version 1.45, 2012/12/24 08:44:58
|
version 1.46, 2013/03/14 10:23:37
|
|
|
#include <Pegasus/Common/Tracer.h> | #include <Pegasus/Common/Tracer.h> |
#include <Pegasus/Common/TraceFileHandler.h> | #include <Pegasus/Common/TraceFileHandler.h> |
#include <Pegasus/Common/Logger.h> | #include <Pegasus/Common/Logger.h> |
|
#include <Pegasus/Common/String.h> |
|
#include <Pegasus/Common/StringConversion.h> |
|
|
| |
#if defined(PEGASUS_OS_TYPE_WINDOWS) | #if defined(PEGASUS_OS_TYPE_WINDOWS) |
# include <Pegasus/Common/TraceFileHandlerWindows.cpp> | # include <Pegasus/Common/TraceFileHandlerWindows.cpp> |
|
|
_fileName(0), | _fileName(0), |
_fileHandle(0), | _fileHandle(0), |
_logErrorBitField(0), | _logErrorBitField(0), |
_configHasChanged(true) |
_configHasChanged(true), |
#ifdef PEGASUS_PLATFORM_LINUX_GENERIC_GNU |
_maxTraceFileSizeBytes(0), |
,_baseFileName(0), |
_maxTraceFileNumber(0) |
_fileCount(0) |
|
#endif |
|
{ | { |
} | } |
| |
|
|
fclose(_fileHandle); | fclose(_fileHandle); |
} | } |
free(_fileName); | free(_fileName); |
#ifdef PEGASUS_PLATFORM_LINUX_GENERIC_GNU |
|
free(_baseFileName); |
|
#endif |
|
} | } |
| |
//////////////////////////////////////////////////////////////////////////////// | //////////////////////////////////////////////////////////////////////////////// |
|
|
| |
free(_fileName); | free(_fileName); |
_fileName = 0; | _fileName = 0; |
#ifdef PEGASUS_PLATFORM_LINUX_GENERIC_GNU |
|
free(_baseFileName); |
|
_baseFileName = 0; |
|
#endif |
|
| |
if (Tracer::_getInstance() ->_traceFile.size() == 0) | if (Tracer::_getInstance() ->_traceFile.size() == 0) |
{ | { |
|
|
return; | return; |
} | } |
| |
#ifdef PEGASUS_PLATFORM_LINUX_GENERIC_GNU |
|
_baseFileName = strdup(_fileName); |
|
#endif |
|
|
|
_configHasChanged=false; | _configHasChanged=false; |
| |
return; | return; |
|
|
} | } |
} | } |
| |
|
Boolean TraceFileHandler::_fileExists(char* fileName) |
|
{ |
|
if (!System::exists(fileName)) |
|
{ |
|
_fileHandle = _openFile(fileName); |
|
if(!_fileHandle) |
|
{ |
|
return false; |
|
} |
|
} |
|
|
|
Uint32 traceFileSize = 0; |
|
|
|
if(!FileSystem::getFileSize(_fileName, traceFileSize)) |
|
{ |
|
return false; |
|
} |
|
|
|
/* Check if the size of the tracefile |
|
is exceeding configured value.*/ |
|
if(traceFileSize > _maxTraceFileSizeBytes) |
|
{ |
|
rollTraceFile(_fileName); |
|
} |
|
|
|
return true; |
|
} |
|
|
|
void TraceFileHandler::setMaxTraceFileSize(Uint32 maxTraceFileSizeBytes) |
|
{ |
|
_maxTraceFileSizeBytes = maxTraceFileSizeBytes; |
|
} |
|
|
|
void TraceFileHandler::setMaxTraceFileNumber(Uint32 maxTraceFileNumber) |
|
{ |
|
_maxTraceFileNumber = maxTraceFileNumber; |
|
} |
|
|
|
void TraceFileHandler::rollTraceFile(const char* fileName) |
|
{ |
|
// Close the File |
|
if (_fileHandle) |
|
{ |
|
fclose(_fileHandle); |
|
_fileHandle = 0; |
|
} |
|
|
|
String oldFileName; |
|
oldFileName.append(fileName); |
|
oldFileName.append("."); |
|
char buffer[5]; |
|
Uint32 size = 0; |
|
oldFileName.append(Uint32ToString(buffer, _maxTraceFileNumber, size)); |
|
|
|
String oldFileName_s(oldFileName); |
|
FileSystem::removeFile(oldFileName_s); |
|
Uint32 n = strlen(fileName) + 1; |
|
|
|
for(Uint32 i = _maxTraceFileNumber ; i > 1 ; i--) |
|
{ |
|
String newFileName_s = oldFileName_s; |
|
oldFileName = oldFileName.subString(0, n); |
|
oldFileName.append(Uint32ToString(buffer, (i-1), size)); |
|
oldFileName_s.assign(oldFileName); |
|
FileSystem::renameFile(oldFileName_s, newFileName_s); |
|
} |
|
|
|
String fileName_s(fileName); |
|
FileSystem::renameFile(fileName_s, oldFileName_s); |
|
|
|
_fileHandle = TraceFileHandler::_openFile(fileName); |
|
} |
| |
PEGASUS_NAMESPACE_END | PEGASUS_NAMESPACE_END |