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