mirror of
https://github.com/gabime/spdlog.git
synced 2025-04-29 12:03:53 +00: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});
|
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.
|
// 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)
|
SPDLOG_INLINE void backtracer::foreach_pop(std::function<void(const details::log_msg &)> fun)
|
||||||
{
|
{
|
||||||
|
@ -32,6 +32,7 @@ public:
|
|||||||
void disable();
|
void disable();
|
||||||
bool enabled() const;
|
bool enabled() const;
|
||||||
void push_back(const log_msg &msg);
|
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.
|
// 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);
|
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_()
|
SPDLOG_INLINE void logger::dump_backtrace_()
|
||||||
{
|
{
|
||||||
using details::log_msg;
|
using details::log_msg;
|
||||||
if (tracer_.enabled())
|
if (tracer_.enabled() && !tracer_.empty())
|
||||||
{
|
{
|
||||||
sink_it_(log_msg{name(), level::info, "****************** Backtrace Start ******************"});
|
sink_it_(log_msg{name(), level::info, "****************** Backtrace Start ******************"});
|
||||||
tracer_.foreach_pop([this](const log_msg &msg) { this->sink_it_(msg); });
|
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 ********************");
|
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]")
|
TEST_CASE("bactrace-async", "[bactrace]")
|
||||||
{
|
{
|
||||||
using spdlog::sinks::test_sink_mt;
|
using spdlog::sinks::test_sink_mt;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user