null_sink.h 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  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/details/synchronous_factory.h>
  6. #include <spdlog/sinks/base_sink.h>
  7. #include <mutex>
  8. namespace spdlog {
  9. namespace sinks {
  10. template <typename Mutex>
  11. class null_sink : public base_sink<Mutex> {
  12. protected:
  13. void sink_it_(const details::log_msg &) override {}
  14. void flush_() override {}
  15. };
  16. using null_sink_mt = null_sink<details::null_mutex>;
  17. using null_sink_st = null_sink<details::null_mutex>;
  18. } // namespace sinks
  19. template <typename Factory = spdlog::synchronous_factory>
  20. inline std::shared_ptr<logger> null_logger_mt(const std::string &logger_name) {
  21. auto null_logger = Factory::template create<sinks::null_sink_mt>(logger_name);
  22. null_logger->set_level(level::off);
  23. return null_logger;
  24. }
  25. template <typename Factory = spdlog::synchronous_factory>
  26. inline std::shared_ptr<logger> null_logger_st(const std::string &logger_name) {
  27. auto null_logger = Factory::template create<sinks::null_sink_st>(logger_name);
  28. null_logger->set_level(level::off);
  29. return null_logger;
  30. }
  31. } // namespace spdlog