00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include <common/FileLogger.h>
00022 #include <common/Defines.h>
00023 #include <time.h>
00024
00025 FileLogger::FileLogger(const std::string &fileName) :
00026 size_(0), logFile_(0), fileName_(fileName)
00027 {
00028
00029 }
00030
00031 FileLogger::~FileLogger()
00032 {
00033 }
00034
00035 void FileLogger::logMessage(LoggerInfo &info)
00036 {
00037 const unsigned int MaxSize = 256000;
00038 if (!logFile_ || (size_>MaxSize)) openFile(fileName_.c_str());
00039 if (!logFile_) return;
00040
00041
00042 size_ += strlen(info.getMessage());
00043 fprintf(logFile_, "%s - %s\n", info.getTime(), info.getMessage());
00044 fflush(logFile_);
00045 }
00046
00047 void FileLogger::openFile(const char *fileName)
00048 {
00049 size_ = 0;
00050 if (logFile_) fclose(logFile_);
00051
00052 time_t theTime = time(0);
00053 struct tm *newtime = localtime(&theTime);
00054
00055 std::string logFileName =
00056 S3D::formatStringBuffer("%s-%i%02i%02i-%02i%02i%02i.log", fileName,
00057 newtime->tm_year + 1900, newtime->tm_mon + 1, newtime->tm_mday,
00058 newtime->tm_hour, newtime->tm_min, newtime->tm_sec);
00059 std::string fullLogFileName = S3D::getLogFile(logFileName.c_str());
00060 logFile_ = fopen(fullLogFileName.c_str(), "w");
00061 }