log_manager.h 715 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  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 c_logger;
  15. class logger;
  16. class logger_impl;
  17. class manager {
  18. public:
  19. static manager & instance();
  20. logger get();
  21. logger get(std::string const & name);
  22. c_logger c_get();
  23. c_logger c_get(std::string const & name);
  24. void configure();
  25. private:
  26. manager();
  27. private:
  28. std::unique_ptr<struct manager_impl> pimpl;
  29. };
  30. using impl_factory = objects::prototype::factory<
  31. std::shared_ptr<logger_impl>>;
  32. }