diff --git a/include/spdlog/async_logger-inl.h b/include/spdlog/async_logger-inl.h index e1633803..05852a6c 100644 --- a/include/spdlog/async_logger-inl.h +++ b/include/spdlog/async_logger-inl.h @@ -62,16 +62,6 @@ 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) } diff --git a/include/spdlog/details/thread_pool-inl.h b/include/spdlog/details/thread_pool-inl.h index 369f30fe..a8e37b16 100644 --- a/include/spdlog/details/thread_pool-inl.h +++ b/include/spdlog/details/thread_pool-inl.h @@ -117,6 +117,13 @@ bool SPDLOG_INLINE thread_pool::process_next_msg_() switch (incoming_async_msg.msg_type) { case async_msg_type::log: { + auto lost_messages = overrun_counter(); + if (lost_messages > 0) + { + incoming_async_msg.worker_ptr->backend_sink_it_( + details::log_msg{incoming_async_msg.worker_ptr->name(), level::debug, fmt::format("Lost {} messages", lost_messages)}); + reset_overrun_counter(); + } incoming_async_msg.worker_ptr->backend_sink_it_(incoming_async_msg); return true; }