chore: Use the sink of the specific async logger directly for reporting the dropped messages

pull/2483/head
Aleksandar Levic 3 years ago
parent 912da77783
commit 05d4ec4eb7

@ -62,6 +62,16 @@ SPDLOG_INLINE void spdlog::async_logger::backend_sink_it_(const details::log_msg
SPDLOG_TRY SPDLOG_TRY
{ {
sink->log(msg); sink->log(msg);
if (auto pool_ptr = thread_pool_.lock())
{
auto lost_messages = pool_ptr->overrun_counter();
if (lost_messages > 0) {
sink->log(details::log_msg{name(), level::warn, fmt::format("Lost {} messages", lost_messages)});
sink->flush();
pool_ptr->reset_overrun_counter();
}
}
} }
SPDLOG_LOGGER_CATCH(msg.source) SPDLOG_LOGGER_CATCH(msg.source)
} }
@ -71,15 +81,6 @@ SPDLOG_INLINE void spdlog::async_logger::backend_sink_it_(const details::log_msg
{ {
backend_flush_(); backend_flush_();
} }
if (auto pool_ptr = thread_pool_.lock())
{
auto lost_messages = pool_ptr->overrun_counter();
if (lost_messages > 0) {
err_handler_(fmt::format("Lost {} messages.", lost_messages));
pool_ptr->reset_overrun_counter();
}
}
} }
SPDLOG_INLINE void spdlog::async_logger::backend_flush_() SPDLOG_INLINE void spdlog::async_logger::backend_flush_()

Loading…
Cancel
Save