mirror of
https://github.com/gabime/spdlog.git
synced 2024-11-21 03:12:41 +08:00
Unnecessary backtrace begin/end logs (#2568)
* add empty getter function to tracer * add unit test to check empty tracer Co-authored-by: Gyorgy Katona <gykatona@logmein.com>
This commit is contained in:
parent
f0cd9d1530
commit
8512000f36
@ -54,6 +54,12 @@ SPDLOG_INLINE void backtracer::push_back(const log_msg &msg)
|
||||
messages_.push_back(log_msg_buffer{msg});
|
||||
}
|
||||
|
||||
SPDLOG_INLINE bool backtracer::empty() const
|
||||
{
|
||||
std::lock_guard<std::mutex> lock{mutex_};
|
||||
return messages_.empty();
|
||||
}
|
||||
|
||||
// pop all items in the q and apply the given fun on each of them.
|
||||
SPDLOG_INLINE void backtracer::foreach_pop(std::function<void(const details::log_msg &)> fun)
|
||||
{
|
||||
|
@ -32,6 +32,7 @@ public:
|
||||
void disable();
|
||||
bool enabled() const;
|
||||
void push_back(const log_msg &msg);
|
||||
bool empty() const;
|
||||
|
||||
// pop all items in the q and apply the given fun on each of them.
|
||||
void foreach_pop(std::function<void(const details::log_msg &)> fun);
|
||||
|
@ -210,7 +210,7 @@ SPDLOG_INLINE void logger::flush_()
|
||||
SPDLOG_INLINE void logger::dump_backtrace_()
|
||||
{
|
||||
using details::log_msg;
|
||||
if (tracer_.enabled())
|
||||
if (tracer_.enabled() && !tracer_.empty())
|
||||
{
|
||||
sink_it_(log_msg{name(), level::info, "****************** Backtrace Start ******************"});
|
||||
tracer_.foreach_pop([this](const log_msg &msg) { this->sink_it_(msg); });
|
||||
|
@ -31,6 +31,19 @@ TEST_CASE("bactrace1", "[bactrace]")
|
||||
REQUIRE(test_sink->lines()[7] == "****************** Backtrace End ********************");
|
||||
}
|
||||
|
||||
TEST_CASE("bactrace-empty", "[bactrace]")
|
||||
{
|
||||
using spdlog::sinks::test_sink_st;
|
||||
auto test_sink = std::make_shared<test_sink_st>();
|
||||
size_t backtrace_size = 5;
|
||||
|
||||
spdlog::logger logger("test-backtrace", test_sink);
|
||||
logger.set_pattern("%v");
|
||||
logger.enable_backtrace(backtrace_size);
|
||||
logger.dump_backtrace();
|
||||
REQUIRE(test_sink->lines().size() == 0);
|
||||
}
|
||||
|
||||
TEST_CASE("bactrace-async", "[bactrace]")
|
||||
{
|
||||
using spdlog::sinks::test_sink_mt;
|
||||
|
Loading…
Reference in New Issue
Block a user