log_manager.h 781 B

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