diff --git a/include/spdlog/details/backtracer.h b/include/spdlog/details/backtracer.h index 91dfea90..e09c6128 100644 --- a/include/spdlog/details/backtracer.h +++ b/include/spdlog/details/backtracer.h @@ -17,13 +17,19 @@ namespace details { class backtracer { std::mutex mutex_; + size_t n_messages_; circular_q messages_; public: - explicit backtracer(size_t n_message) - : messages_{n_message} + explicit backtracer(size_t n_messages) + : n_messages_{n_messages}, messages_{n_messages} {} + size_t n_messages() + { + return n_messages_; + } + void add(const log_msg &msg) { std::lock_guard lock{mutex_}; diff --git a/include/spdlog/logger-inl.h b/include/spdlog/logger-inl.h index cc7be86d..0c380c1d 100644 --- a/include/spdlog/logger-inl.h +++ b/include/spdlog/logger-inl.h @@ -23,7 +23,12 @@ SPDLOG_INLINE logger::logger(const logger &other) , flush_level_(other.flush_level_.load(std::memory_order_relaxed)) , custom_err_handler_(other.custom_err_handler_) , tracer_(other.tracer_) -{} +{ + if(other.tracer_) + { + enable_backtrace(other.tracer_->n_messages()); + } +} SPDLOG_INLINE logger::logger(logger &&other) SPDLOG_NOEXCEPT : name_(std::move(other.name_)), sinks_(std::move(other.sinks_)),