assert/logging: Stop the logging thread and flush the backends before crashing (#7146)

This commit is contained in:
SachinVin
2023-11-12 01:25:42 +05:30
committed by GitHub
parent 222b1cc0d7
commit ceeda05798
3 changed files with 25 additions and 0 deletions

View File

@ -220,6 +220,10 @@ public:
instance->StartBackendThread();
}
static void Stop() {
instance->StopBackendThread();
}
Impl(const Impl&) = delete;
Impl& operator=(const Impl&) = delete;
@ -330,6 +334,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;
@ -421,6 +434,10 @@ void Start() {
Impl::Start();
}
void Stop() {
Impl::Stop();
}
void DisableLoggingInTests() {
initialization_in_progress_suppress_logging = true;
}