Commit 099137fe authored by gabime's avatar gabime

backtrace_sink code cleanup

parent 36f25389
...@@ -25,8 +25,7 @@ SPDLOG_INLINE logger::logger(const logger &other) ...@@ -25,8 +25,7 @@ SPDLOG_INLINE logger::logger(const logger &other)
, backtrace_sink_(other.backtrace_sink_) , backtrace_sink_(other.backtrace_sink_)
{} {}
SPDLOG_INLINE logger::logger(logger &&other) SPDLOG_NOEXCEPT : SPDLOG_INLINE logger::logger(logger &&other) SPDLOG_NOEXCEPT : name_(std::move(other.name_)),
name_(std::move(other.name_)),
sinks_(std::move(other.sinks_)), sinks_(std::move(other.sinks_)),
level_(other.level_.load(std::memory_order_relaxed)), level_(other.level_.load(std::memory_order_relaxed)),
flush_level_(other.flush_level_.load(std::memory_order_relaxed)), flush_level_(other.flush_level_.load(std::memory_order_relaxed)),
...@@ -88,7 +87,7 @@ SPDLOG_INLINE bool logger::should_log(level::level_enum msg_level) const ...@@ -88,7 +87,7 @@ SPDLOG_INLINE bool logger::should_log(level::level_enum msg_level) const
SPDLOG_INLINE void logger::set_level(level::level_enum log_level) SPDLOG_INLINE void logger::set_level(level::level_enum log_level)
{ {
if(backtrace_sink_) if (backtrace_sink_)
{ {
auto tracer = static_cast<sinks::backtrace_sink_mt *>(backtrace_sink_.get()); auto tracer = static_cast<sinks::backtrace_sink_mt *>(backtrace_sink_.get());
tracer->set_filter_level(log_level); tracer->set_filter_level(log_level);
...@@ -139,8 +138,7 @@ SPDLOG_INLINE void logger::enable_backtrace(size_t n_messages) ...@@ -139,8 +138,7 @@ SPDLOG_INLINE void logger::enable_backtrace(size_t n_messages)
{ {
if (!backtrace_sink_) if (!backtrace_sink_)
{ {
auto new_backtrace_sink = new spdlog::sinks::backtrace_sink_mt(level(), n_messages); auto new_backtrace_sink = new spdlog::sinks::backtrace_sink_mt(std::move(sinks_), level(), n_messages);
new_backtrace_sink->set_sinks(std::move(sinks_));
backtrace_sink_.reset(new_backtrace_sink); backtrace_sink_.reset(new_backtrace_sink);
sinks().push_back(backtrace_sink_); sinks().push_back(backtrace_sink_);
assert(sinks().size() == 1); assert(sinks().size() == 1);
......
...@@ -351,7 +351,7 @@ protected: ...@@ -351,7 +351,7 @@ protected:
spdlog::level_t flush_level_{level::off}; spdlog::level_t flush_level_{level::off};
err_handler custom_err_handler_{nullptr}; err_handler custom_err_handler_{nullptr};
sink_ptr backtrace_sink_; sink_ptr backtrace_sink_;
//bool backtrace_enabled_{false}; // bool backtrace_enabled_{false};
virtual void sink_it_(const details::log_msg &msg); virtual void sink_it_(const details::log_msg &msg);
virtual void flush_(); virtual void flush_();
......
...@@ -5,7 +5,6 @@ ...@@ -5,7 +5,6 @@
#include "dist_sink.h" #include "dist_sink.h"
#include "spdlog/common.h" #include "spdlog/common.h"
#include "spdlog/details/null_mutex.h"
#include "spdlog/details/log_msg_buffer.h" #include "spdlog/details/log_msg_buffer.h"
#include "spdlog/details/circular_q.h" #include "spdlog/details/circular_q.h"
...@@ -13,9 +12,9 @@ ...@@ -13,9 +12,9 @@
#include <string> #include <string>
#include <chrono> #include <chrono>
// Store log messages in circular buffer // Store log messages in circular buffer.
// If it encounters a message with high enough level, it will send all previous message to it child sinks // If it encounters a message with high enough level, it will send all previous message to it child sinks.
// Useful for storing debug data in case of error/warning happens // Useful for storing debug data in case of error/warning happens.
namespace spdlog { namespace spdlog {
namespace sinks { namespace sinks {
...@@ -23,10 +22,12 @@ template<typename Mutex> ...@@ -23,10 +22,12 @@ template<typename Mutex>
class backtrace_sink : public dist_sink<Mutex> class backtrace_sink : public dist_sink<Mutex>
{ {
public: public:
explicit backtrace_sink(spdlog::level::level_enum filter_level, size_t n_messages) backtrace_sink(std::vector<std::shared_ptr<sink>> &&child_sinks, spdlog::level::level_enum filter_level, size_t n_messages)
: filter_level_{filter_level} : filter_level_{filter_level}
, traceback_msgs_{n_messages} , traceback_msgs_{n_messages}
{} {
dist_sink<Mutex>::set_sinks(std::move(child_sinks));
}
void set_filter_level(spdlog::level::level_enum filter_level) void set_filter_level(spdlog::level::level_enum filter_level)
{ {
...@@ -83,7 +84,6 @@ protected: ...@@ -83,7 +84,6 @@ protected:
}; };
using backtrace_sink_mt = backtrace_sink<std::mutex>; using backtrace_sink_mt = backtrace_sink<std::mutex>;
using backtrace_sink_st = backtrace_sink<details::null_mutex>;
} // namespace sinks } // namespace sinks
} // namespace spdlog } // namespace spdlog
...@@ -45,12 +45,11 @@ public: ...@@ -45,12 +45,11 @@ public:
sinks_ = std::move(sinks); sinks_ = std::move(sinks);
} }
std::vector<std::shared_ptr<sink>>& sinks() std::vector<std::shared_ptr<sink>> &sinks()
{ {
return sinks_; return sinks_;
} }
protected: protected:
void sink_it_(const details::log_msg &msg) override void sink_it_(const details::log_msg &msg) override
{ {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment