null_sink.h 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. // Copyright(c) 2015-present, Gabi Melman & spdlog contributors.
  2. // Distributed under the MIT License (http://opensource.org/licenses/MIT)
  3. #pragma once
  4. #include <spdlog/details/null_mutex.h>
  5. #include <spdlog/sinks/base_sink.h>
  6. #include <spdlog/details/synchronous_factory.h>
  7. #include <mutex>
  8. namespace spdlog {
  9. namespace sinks {
  10. template<typename Mutex>
  11. class null_sink : public base_sink<Mutex>
  12. {
  13. protected:
  14. void sink_it_(const details::log_msg &) override {}
  15. void flush_() override {}
  16. };
  17. using null_sink_mt = null_sink<details::null_mutex>;
  18. using null_sink_st = null_sink<details::null_mutex>;
  19. } // namespace sinks
  20. template<typename Factory = spdlog::synchronous_factory>
  21. inline std::shared_ptr<logger> null_logger_mt(const std::string &logger_name)
  22. {
  23. auto null_logger = Factory::template create<sinks::null_sink_mt>(logger_name);
  24. null_logger->set_level(level::off);
  25. return null_logger;
  26. }
  27. template<typename Factory = spdlog::synchronous_factory>
  28. inline std::shared_ptr<logger> null_logger_st(const std::string &logger_name)
  29. {
  30. auto null_logger = Factory::template create<sinks::null_sink_st>(logger_name);
  31. null_logger->set_level(level::off);
  32. return null_logger;
  33. }
  34. } // namespace spdlog