base_sink-inl.h 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. // Copyright(c) 2015-present, Gabi Melman & spdlog contributors.
  2. // Distributed under the MIT License (http://opensource.org/licenses/MIT)
  3. #pragma once
  4. #ifndef SPDLOG_HEADER_ONLY
  5. #include <spdlog/sinks/base_sink.h>
  6. #endif
  7. #include <spdlog/common.h>
  8. #include <spdlog/pattern_formatter.h>
  9. #include <memory>
  10. #include <mutex>
  11. template <typename Mutex>
  12. SPDLOG_INLINE spdlog::sinks::base_sink<Mutex>::base_sink()
  13. : formatter_{details::make_unique<spdlog::pattern_formatter>()} {}
  14. template <typename Mutex>
  15. SPDLOG_INLINE spdlog::sinks::base_sink<Mutex>::base_sink(
  16. std::unique_ptr<spdlog::formatter> formatter)
  17. : formatter_{std::move(formatter)} {}
  18. template <typename Mutex>
  19. void SPDLOG_INLINE spdlog::sinks::base_sink<Mutex>::log(const details::log_msg &msg) {
  20. std::lock_guard<Mutex> lock(mutex_);
  21. sink_it_(msg);
  22. }
  23. template <typename Mutex>
  24. void SPDLOG_INLINE spdlog::sinks::base_sink<Mutex>::flush() {
  25. std::lock_guard<Mutex> lock(mutex_);
  26. flush_();
  27. }
  28. template <typename Mutex>
  29. void SPDLOG_INLINE spdlog::sinks::base_sink<Mutex>::set_pattern(const std::string &pattern) {
  30. std::lock_guard<Mutex> lock(mutex_);
  31. set_pattern_(pattern);
  32. }
  33. template <typename Mutex>
  34. void SPDLOG_INLINE
  35. spdlog::sinks::base_sink<Mutex>::set_formatter(std::unique_ptr<spdlog::formatter> sink_formatter) {
  36. std::lock_guard<Mutex> lock(mutex_);
  37. set_formatter_(std::move(sink_formatter));
  38. }
  39. template <typename Mutex>
  40. void SPDLOG_INLINE spdlog::sinks::base_sink<Mutex>::set_pattern_(const std::string &pattern) {
  41. set_formatter_(details::make_unique<spdlog::pattern_formatter>(pattern));
  42. }
  43. template <typename Mutex>
  44. void SPDLOG_INLINE
  45. spdlog::sinks::base_sink<Mutex>::set_formatter_(std::unique_ptr<spdlog::formatter> sink_formatter) {
  46. formatter_ = std::move(sink_formatter);
  47. }