log_manager.h 633 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. //
  2. // log_manager.hpp
  3. // logging
  4. //
  5. // Created by Sam Jaffe on 4/1/19.
  6. //
  7. #pragma once
  8. #include <memory>
  9. #include <string>
  10. namespace objects { namespace prototype {
  11. template <typename, typename...> class factory;
  12. } }
  13. namespace logging {
  14. class logger;
  15. class logger_impl;
  16. class manager {
  17. public:
  18. static manager & instance();
  19. logger get();
  20. logger get(std::string const & name);
  21. void configure();
  22. private:
  23. manager();
  24. private:
  25. std::unique_ptr<struct manager_impl> pimpl;
  26. };
  27. using impl_factory = objects::prototype::factory<
  28. std::shared_ptr<logger_impl>>;
  29. }