diff --git a/include/spdlog/async_logger-inl.h b/include/spdlog/async_logger-inl.h index 70440ce1..34ecbc5a 100644 --- a/include/spdlog/async_logger-inl.h +++ b/include/spdlog/async_logger-inl.h @@ -49,16 +49,31 @@ SPDLOG_INLINE void spdlog::async_logger::dump_backtrace_() if (auto pool_ptr = thread_pool_.lock()) { pool_ptr->post_dump_backtrace(shared_from_this(), overflow_policy_); } else { - SPDLOG_THROW(spdlog_ex("async dumptrace: thread pool doesn't exist anymore")); + SPDLOG_THROW(spdlog_ex("async dump_backtrace: thread pool doesn't exist anymore")); } } // // backend functions - called from the thread pool to do the actual job // -SPDLOG_INLINE void spdlog::async_logger::backend_sink_it_(const details::log_msg &incoming_log_msg) +SPDLOG_INLINE void spdlog::async_logger::backend_sink_it_(const details::log_msg &msg) { - spdlog::logger::sink_it_(incoming_log_msg); + for (auto &sink : sinks_) + { + if (sink->should_log(msg.level)) + { + SPDLOG_TRY + { + sink->log(msg); + } + SPDLOG_LOGGER_CATCH() + } + } + + if (should_flush_(msg)) + { + backend_flush_(); + } } SPDLOG_INLINE void spdlog::async_logger::backend_flush_() @@ -66,8 +81,6 @@ SPDLOG_INLINE void spdlog::async_logger::backend_flush_() spdlog::logger::flush_(); } - - SPDLOG_INLINE void spdlog::async_logger::backend_dump_backtrace_() { spdlog::logger::dump_backtrace_();