Added enable_backtrace to spdlog_api

This commit is contained in:
gabime
2019-08-23 02:28:52 +03:00
parent 65407539bb
commit a6d8b52686
7 changed files with 46 additions and 3 deletions

View File

@@ -67,10 +67,17 @@ SPDLOG_INLINE void registry::initialize_logger(std::shared_ptr<logger> new_logge
new_logger->set_level(level_);
new_logger->flush_on(flush_level_);
if(backtrace_level_ != level::off)
{
new_logger->enable_backtrace(backtrace_level_, backtrace_n_messages_);
}
if (automatic_registration_)
{
register_logger_(std::move(new_logger));
}
}
SPDLOG_INLINE std::shared_ptr<logger> registry::get(const std::string &logger_name)
@@ -135,6 +142,18 @@ SPDLOG_INLINE void registry::set_formatter(std::unique_ptr<formatter> formatter)
}
}
SPDLOG_INLINE void registry::enable_backtrace(level::level_enum trigger_level, size_t n_messages)
{
std::lock_guard<std::mutex> lock(logger_map_mutex_);
backtrace_level_ = trigger_level;
backtrace_n_messages_ = n_messages;
for (auto &l : loggers_)
{
l.second->enable_backtrace(trigger_level, n_messages);
}
}
SPDLOG_INLINE void registry::set_level(level::level_enum log_level)
{
std::lock_guard<std::mutex> lock(logger_map_mutex_);

View File

@@ -52,6 +52,8 @@ public:
// Set global formatter. Each sink in each logger will get a clone of this object
void set_formatter(std::unique_ptr<formatter> formatter);
void enable_backtrace(level::level_enum trigger_level, size_t n_messages);
void set_level(level::level_enum log_level);
void flush_on(level::level_enum log_level);
@@ -94,6 +96,8 @@ private:
std::unique_ptr<periodic_worker> periodic_flusher_;
std::shared_ptr<logger> default_logger_;
bool automatic_registration_ = true;
level::level_enum backtrace_level_ = level::off;
size_t backtrace_n_messages_ = 0;
};
} // namespace details