From 05d4ec4eb76265ee7d0fe9e2560fc718c1600068 Mon Sep 17 00:00:00 2001 From: Aleksandar Levic Date: Thu, 8 Sep 2022 13:55:44 +0200 Subject: [PATCH] chore: Use the sink of the specific async logger directly for reporting the dropped messages --- include/spdlog/async_logger-inl.h | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/include/spdlog/async_logger-inl.h b/include/spdlog/async_logger-inl.h index 7a093162..e1633803 100644 --- a/include/spdlog/async_logger-inl.h +++ b/include/spdlog/async_logger-inl.h @@ -62,6 +62,16 @@ SPDLOG_INLINE void spdlog::async_logger::backend_sink_it_(const details::log_msg SPDLOG_TRY { 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) } @@ -71,15 +81,6 @@ SPDLOG_INLINE void spdlog::async_logger::backend_sink_it_(const details::log_msg { 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_()