CmLog.cpp 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #include "CmLog.h"
  2. namespace CamelotEngine
  3. {
  4. LogEntry::LogEntry(const String& msg, LogLevel level)
  5. :mMsg(msg), mLevel(level)
  6. { }
  7. Log::Log(const String& logFilePath, bool autoSave, bool suppressFileOutput)
  8. :mAutoSave(autoSave), mSuppressFileOutput(suppressFileOutput), mSaveFilePath(logFilePath)
  9. {
  10. }
  11. Log::~Log()
  12. {
  13. save();
  14. for(auto iter = mEntries.begin(); iter != mEntries.end(); ++iter)
  15. delete *iter;
  16. }
  17. void Log::logMsg(const String& message, LogLevel level)
  18. {
  19. LogEntry* newEntry = new LogEntry(message, level);
  20. mEntries.push_back(newEntry);
  21. doOnEntryAdded(*newEntry);
  22. if(mAutoSave)
  23. save();
  24. }
  25. void Log::clear()
  26. {
  27. for(auto iter = mEntries.begin(); iter != mEntries.end(); ++iter)
  28. delete *iter;
  29. mEntries.clear();
  30. if(mAutoSave)
  31. save();
  32. }
  33. void Log::save()
  34. {
  35. if(mSuppressFileOutput)
  36. return;
  37. // TODO - Write to disk and throw exception if it can't
  38. //OGRE_EXCEPT(::Ogre::Exception::ERR_INTERNAL_ERROR,
  39. // "Cannot create log file at " + mSaveFilePath,
  40. // "Log::save()");
  41. }
  42. void Log::doOnEntryAdded(const LogEntry& entry)
  43. {
  44. onEntryAdded(entry);
  45. }
  46. }