CLogManager.cpp 812 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #include "StdInc.h"
  2. #include "CLogManager.h"
  3. #include "CLogger.h"
  4. CLogManager * CLogManager::instance = nullptr;
  5. boost::mutex CLogManager::smx;
  6. CLogManager * CLogManager::get()
  7. {
  8. TLockGuard _(smx);
  9. if(!instance)
  10. {
  11. instance = new CLogManager();
  12. }
  13. return instance;
  14. }
  15. CLogManager::CLogManager()
  16. {
  17. }
  18. CLogManager::~CLogManager()
  19. {
  20. BOOST_FOREACH(auto & i, loggers)
  21. {
  22. delete i.second;
  23. }
  24. }
  25. void CLogManager::addLogger(CGLogger * logger)
  26. {
  27. TWriteLock _(mx);
  28. loggers[logger->getDomain().getName()] = logger;
  29. }
  30. CGLogger * CLogManager::getLogger(const CLoggerDomain & domain)
  31. {
  32. TReadLock _(mx);
  33. auto it = loggers.find(domain.getName());
  34. if(it != loggers.end())
  35. {
  36. return it->second;
  37. }
  38. else
  39. {
  40. return nullptr;
  41. }
  42. }