#include <displayer.h>
Inheritance diagram for NLMISC::CFileDisplayer:

Nevrax France
Definition at line 122 of file displayer.h.
Public Member Functions | |
| CFileDisplayer () | |
| CFileDisplayer (const std::string &filename, bool eraseLastLog=false, const char *displayerName="", bool raw=false) | |
| Constructor. | |
| void | display (const CLog::TDisplayInfo &args, const char *message) |
| Display the string where it does. | |
| void | setParam (const std::string &filename, bool eraseLastLog=false) |
| Set Parameter of the displayer if not set at the ctor time. | |
| ~CFileDisplayer () | |
Static Public Member Functions | |
| const char * | dateToComputerString (time_t date) |
| Convert date to "784551148" string (time in second from 1975). | |
| const char * | dateToHumanString (time_t date) |
| Convert date to "2000/01/14 10:05:17" string. | |
| const char * | dateToHumanString () |
| Convert the current date to human string. | |
| const char * | logTypeToString (CLog::TLogType logType, bool longFormat=false) |
| Convert log type to string. | |
Data Fields | |
| std::string | DisplayerName |
| This is the idenfiant for a displayer, it is used to fond or remove a displayer. | |
Protected Member Functions | |
| virtual void | doDisplay (const CLog::TDisplayInfo &args, const char *message) |
| Put the string into the file. | |
Static Protected Member Functions | |
| const char * | HeaderString () |
Private Attributes | |
| std::string | _FileName |
| FILE * | _FilePointer |
| uint | _LastLogSizeChecked |
| bool | _NeedHeader |
| bool | _Raw |
|
||||||||||||||||||||
|
Constructor.
Definition at line 328 of file displayer.cpp. References _FilePointer, and setParam().
00328 : 00329 IDisplayer (displayerName), _NeedHeader(true), _LastLogSizeChecked(0), _Raw(raw) 00330 { 00331 _FilePointer = (FILE*)1; 00332 setParam (filename, eraseLastLog); 00333 } |
|
|
Definition at line 335 of file displayer.cpp. References _FilePointer.
00335 : 00336 IDisplayer (""), _NeedHeader(true), _LastLogSizeChecked(0), _Raw(false) 00337 { 00338 _FilePointer = (FILE*)1; 00339 } |
|
|
Definition at line 341 of file displayer.cpp. References _FilePointer.
00342 {
00343 if (_FilePointer > (FILE*)1)
00344 {
00345 fclose(_FilePointer);
00346 _FilePointer = NULL;
00347 }
00348 }
|
|
|
Convert date to "784551148" string (time in second from 1975).
Definition at line 103 of file displayer.cpp. References NLMISC::smprintf().
00104 {
00105 static char cstime[25];
00106 smprintf (cstime, 25, "%ld", &date);
00107 return cstime;
00108 }
|
|
|
Convert date to "2000/01/14 10:05:17" string.
Definition at line 92 of file displayer.cpp. References uint32.
00093 {
00094 static char cstime[25];
00095 struct tm *tms = localtime(&date);
00096 if (tms)
00097 strftime (cstime, 25, "%Y/%m/%d %H:%M:%S", tms);
00098 else
00099 sprintf(cstime, "bad date %d", (uint32)date);
00100 return cstime;
00101 }
|
|
|
Convert the current date to human string.
Definition at line 85 of file displayer.cpp. Referenced by NLNET::CNetDisplayer::doDisplay(), NLMISC::CMemDisplayer::doDisplay(), NLMISC::CMsgBoxDisplayer::doDisplay(), doDisplay(), and NLMISC::IDisplayer::HeaderString().
00086 {
00087 time_t date;
00088 time (&date);
00089 return dateToHumanString (date);
00090 }
|
|
||||||||||||
|
Display the string where it does.
Definition at line 132 of file displayer.cpp. References NLMISC::IDisplayer::doDisplay().
|
|
||||||||||||
|
Put the string into the file.
Implements NLMISC::IDisplayer. Definition at line 379 of file displayer.cpp. References _FilePointer, _LastLogSizeChecked, _NeedHeader, _Raw, NLMISC::CLog::TDisplayInfo::CallstackAndLog, NLMISC::CLog::TDisplayInfo::Date, NLMISC::IDisplayer::dateToHumanString(), NLMISC::CLog::TDisplayInfo::Filename, NLMISC::IDisplayer::HeaderString(), NLMISC::CLog::TDisplayInfo::Line, NLMISC::CLog::TDisplayInfo::LogType, NLMISC::IDisplayer::logTypeToString(), NLMISC::CLog::TDisplayInfo::ProcessName, res, NLMISC::CLog::TDisplayInfo::ThreadId, and NLMISC::toString().
00380 {
00381 bool needSpace = false;
00382 //stringstream ss;
00383 string str;
00384
00385 // if the filename is not set, don't log
00386 if (_FileName.empty()) return;
00387
00388 if (args.Date != 0 && !_Raw)
00389 {
00390 str += dateToHumanString(args.Date);
00391 needSpace = true;
00392 }
00393
00394 if (args.LogType != CLog::LOG_NO && !_Raw)
00395 {
00396 if (needSpace) { str += " "; needSpace = false; }
00397 str += logTypeToString(args.LogType);
00398 needSpace = true;
00399 }
00400
00401 // Write thread identifier
00402 if ( args.ThreadId != 0 && !_Raw)
00403 {
00404 if (needSpace) { str += " "; needSpace = false; }
00405 str += NLMISC::toString(args.ThreadId);
00406 needSpace = true;
00407 }
00408
00409 if (!args.ProcessName.empty() && !_Raw)
00410 {
00411 if (needSpace) { str += " "; needSpace = false; }
00412 str += args.ProcessName;
00413 needSpace = true;
00414 }
00415
00416 if (args.Filename != NULL && !_Raw)
00417 {
00418 if (needSpace) { str += " "; needSpace = false; }
00419 str += CFile::getFilename(args.Filename);
00420 needSpace = true;
00421 }
00422
00423 if (args.Line != -1 && !_Raw)
00424 {
00425 if (needSpace) { str += " "; needSpace = false; }
00426 str += NLMISC::toString(args.Line);
00427 needSpace = true;
00428 }
00429
00430 if (needSpace) { str += " : "; needSpace = false; }
00431
00432 str += message;
00433
00434 if (_FilePointer > (FILE*)1)
00435 {
00436 // if the file is too big (>5mb), rename it and create another one (check only after 20 lines to speed up)
00437 if (_LastLogSizeChecked++ > 20)
00438 {
00439 int res = ftell (_FilePointer);
00440 if (res > 5*1024*1024)
00441 {
00442 fclose (_FilePointer);
00443 rename (_FileName.c_str(), CFile::findNewFile (_FileName).c_str());
00444 _FilePointer = (FILE*) 1;
00445 _LastLogSizeChecked = 0;
00446 }
00447 }
00448 }
00449
00450 if (_FilePointer == (FILE*)1)
00451 {
00452 _FilePointer = fopen (_FileName.c_str(), "at");
00453 if (_FilePointer == NULL)
00454 printf ("Can't open log file '%s': %s\n", _FileName.c_str(), strerror (errno));
00455 }
00456
00457 if (_FilePointer != 0)
00458 {
00459 if (_NeedHeader)
00460 {
00461 const char *hs = HeaderString();
00462 fwrite (hs, strlen (hs), 1, _FilePointer);
00463 _NeedHeader = false;
00464 }
00465
00466 if(!str.empty())
00467 fwrite (str.c_str(), str.size(), 1, _FilePointer);
00468
00469 if(!args.CallstackAndLog.empty())
00470 fwrite (args.CallstackAndLog.c_str(), args.CallstackAndLog.size (), 1, _FilePointer);
00471
00472 fflush (_FilePointer);
00473 }
00474 }
|
|
|
Definition at line 110 of file displayer.cpp. References NLMISC::IDisplayer::dateToHumanString(), and NLMISC::smprintf(). Referenced by NLMISC::CMemDisplayer::doDisplay(), and doDisplay().
00111 {
00112 static char header[1024];
00113 smprintf(header, 1024, "\nLog Starting [%s]\n", dateToHumanString());
00114 return header;
00115 }
|
|
||||||||||||
|
Convert log type to string.
Definition at line 77 of file displayer.cpp. References NLMISC::LogTypeToString. Referenced by NLMISC::CWindowDisplayer::doDisplay(), NLNET::CNetDisplayer::doDisplay(), NLMISC::CMemDisplayer::doDisplay(), NLMISC::CMsgBoxDisplayer::doDisplay(), doDisplay(), and NLMISC::CStdDisplayer::doDisplay().
00078 {
00079 if (logType < CLog::LOG_NO || logType > CLog::LOG_UNKNOWN)
00080 return "<NotDefined>";
00081
00082 return LogTypeToString[longFormat?1:0][logType];
00083 }
|
|
||||||||||||
|
Set Parameter of the displayer if not set at the ctor time.
Definition at line 350 of file displayer.cpp. References _FilePointer. Referenced by CFileDisplayer(), NLMISC::changeLogDirectory(), and NLNET::CUnifiedNetwork::init().
00351 {
00352 _FileName = filename;
00353
00354 if (filename.empty())
00355 {
00356 // can't do nlwarning or infinite recurs
00357 printf ("CFileDisplayer::setParam(): Can't create file with empty filename\n");
00358 return;
00359 }
00360
00361 if (eraseLastLog)
00362 {
00363 ofstream ofs (filename.c_str(), ios::out | ios::trunc);
00364 if (!ofs.is_open())
00365 {
00366 // can't do nlwarning or infinite recurs
00367 printf ("CFileDisplayer::setParam(): Can't open and clear the log file '%s'\n", filename.c_str());
00368 }
00369 }
00370
00371 if (_FilePointer > (FILE*)1)
00372 {
00373 fclose (_FilePointer);
00374 _FilePointer = (FILE*)1;
00375 }
00376 }
|
|
|
Definition at line 141 of file displayer.h. |
|
|
Definition at line 143 of file displayer.h. Referenced by CFileDisplayer(), doDisplay(), setParam(), and ~CFileDisplayer(). |
|
|
Definition at line 147 of file displayer.h. Referenced by doDisplay(). |
|
|
Definition at line 145 of file displayer.h. Referenced by doDisplay(). |
|
|
Definition at line 149 of file displayer.h. Referenced by doDisplay(). |
|
|
This is the idenfiant for a displayer, it is used to fond or remove a displayer.
Definition at line 63 of file displayer.h. Referenced by NLMISC::IDisplayer::IDisplayer(). |
1.3.6