version 1.18, 2009/01/21 19:52:04
|
version 1.19.8.2, 2013/01/12 07:25:46
|
|
|
#include <Pegasus/Common/System.h> | #include <Pegasus/Common/System.h> |
#include <Pegasus/Common/TraceFileHandler.h> | #include <Pegasus/Common/TraceFileHandler.h> |
#include <Pegasus/Common/Mutex.h> | #include <Pegasus/Common/Mutex.h> |
|
#include <Pegasus/Common/StringConversion.h> |
| |
PEGASUS_USING_STD; | PEGASUS_USING_STD; |
| |
|
|
// approaches 2GB, the next file which gets created would be | // approaches 2GB, the next file which gets created would be |
// named "cimserver.trc.1" and so on ... | // named "cimserver.trc.1" and so on ... |
fclose(_fileHandle); | fclose(_fileHandle); |
sprintf(_fileName, "%s.%u", _baseFileName, ++_fileCount); |
|
_fileHandle = fopen(_fileName, "a+"); |
char buf[1024]; |
|
sprintf(buf, "%s.%u", _baseFileName, ++_fileCount); |
|
|
|
//Holds current trace file name for rolling back in case of failure |
|
char lastTraceFileName [strlen(_fileName) +1 ]; |
|
memset(lastTraceFileName,0x00,sizeof(lastTraceFileName)); |
|
strcpy (lastTraceFileName, _fileName) ; |
|
free(_fileName); |
|
_fileName = 0; |
|
|
|
// 1 extra bytes for trailling NUL |
|
_fileName = (char*)malloc(strlen(buf) + 1 ); |
|
if(_fileName) |
|
{ |
|
sprintf(_fileName, "%s.%u", _baseFileName, _fileCount); |
|
_fileHandle = _openFile(_fileName); |
if (!_fileHandle) | if (!_fileHandle) |
{ | { |
// Unable to open file, log a message |
//error handling done by _openFile |
MessageLoaderParms parm( |
free (_fileName); |
"Common.TraceFileHandler.FAILED_TO_OPEN_FILE", |
_fileName = 0; |
"Failed to open File $0", |
//roll back to old trace file name for retest |
_fileName); |
_fileName = strdup(lastTraceFileName); |
_logError(TRCFH_FAILED_TO_OPEN_FILE_SYSMSG,parm); |
_fileCount--; |
return; | return; |
} | } |
} | } |
|
else |
|
{ |
|
_fileName = strdup(lastTraceFileName); |
|
throw PEGASUS_STD(bad_alloc)(); |
|
} |
|
} |
# endif | # endif |
} | } |
| |
|
|
fprintf(_fileHandle, "%s", message); | fprintf(_fileHandle, "%s", message); |
vfprintf(_fileHandle, fmt, argList); | vfprintf(_fileHandle, fmt, argList); |
fprintf(_fileHandle, "\n"); | fprintf(_fileHandle, "\n"); |
|
|
|
#if defined(PEGASUS_OS_VMS) |
|
if (0 == fsync(fileno(_fileHandle))) |
|
#else |
if (0 == fflush(_fileHandle)) | if (0 == fflush(_fileHandle)) |
|
#endif |
{ | { |
// trace message successful written, reset error log messages | // trace message successful written, reset error log messages |
// thus allow writing of errors to log again | // thus allow writing of errors to log again |
|
|
prepareFileHandle(); | prepareFileHandle(); |
// Write the message to the file | // Write the message to the file |
fprintf(_fileHandle, "%s\n", message); | fprintf(_fileHandle, "%s\n", message); |
|
#if defined(PEGASUS_OS_VMS) |
|
if (0 == fsync(fileno(_fileHandle))) |
|
#else |
if (0 == fflush(_fileHandle)) | if (0 == fflush(_fileHandle)) |
|
#endif |
{ | { |
// trace message successful written, reset error log messages | // trace message successful written, reset error log messages |
// thus allow writing of errors to log again | // thus allow writing of errors to log again |