assert/logging: Stop the logging thread and flush the backends before crashing

Co-Authored-By: SachinVin <26602104+SachinVin@users.noreply.github.com>
This commit is contained in:
FearlessTobi 2023-12-25 13:50:22 +01:00
parent 05e3db3ac9
commit 4f569fd568
3 changed files with 23 additions and 0 deletions

View file

@ -208,6 +208,10 @@ public:
instance->StartBackendThread();
}
static void Stop() {
instance->StopBackendThread();
}
Impl(const Impl&) = delete;
Impl& operator=(const Impl&) = delete;
@ -259,6 +263,15 @@ private:
});
}
void StopBackendThread() {
backend_thread.request_stop();
if (backend_thread.joinable()) {
backend_thread.join();
}
ForEachBackend([](Backend& backend) { backend.Flush(); });
}
Entry CreateEntry(Class log_class, Level log_level, const char* filename, unsigned int line_nr,
const char* function, std::string&& message) const {
using std::chrono::duration_cast;
@ -313,6 +326,10 @@ void Start() {
Impl::Start();
}
void Stop() {
Impl::Stop();
}
void DisableLoggingInTests() {
initialization_in_progress_suppress_logging = true;
}