CLogger.h 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. #pragma once
  2. #include "CConsoleHandler.h"
  3. extern DLL_LINKAGE std::ostream *logfile;
  4. extern DLL_LINKAGE CConsoleHandler *console;
  5. // CLogger, prints log info to console and saves in file
  6. class DLL_LINKAGE CLogger
  7. {
  8. const int lvl;
  9. #ifdef ANDROID
  10. std::ostringstream buf;
  11. int androidloglevel;
  12. void outputAndroid();
  13. #endif
  14. public:
  15. static const int CONSOLE_LOGGING_LEVEL;
  16. static const int FILE_LOGGING_LEVEL;
  17. CLogger& operator<<(std::ostream& (*fun)(std::ostream&));
  18. template<typename T>
  19. CLogger & operator<<(const T & data)
  20. {
  21. #ifdef ANDROID
  22. buf << data;
  23. outputAndroid();
  24. #else
  25. if(lvl < CLogger::CONSOLE_LOGGING_LEVEL)
  26. {
  27. if(console)
  28. console->print(data, lvl);
  29. else
  30. std::cout << data << std::flush;
  31. }
  32. if((lvl < CLogger::FILE_LOGGING_LEVEL) && logfile)
  33. *logfile << data << std::flush;
  34. #endif
  35. return *this;
  36. }
  37. CLogger(const int Lvl);
  38. };
  39. extern DLL_LINKAGE CLogger tlog0; //green - standard progress info
  40. extern DLL_LINKAGE CLogger tlog1; //red - big errors
  41. extern DLL_LINKAGE CLogger tlog2; //magenta - major warnings
  42. extern DLL_LINKAGE CLogger tlog3; //yellow - minor warnings
  43. extern DLL_LINKAGE CLogger tlog4; //white - detailed log info
  44. extern DLL_LINKAGE CLogger tlog5; //gray - minor log info
  45. extern DLL_LINKAGE CLogger tlog6; //teal - AI info