log_manager.h 887 B

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