diff --git a/src/util/Assert.h b/src/util/Assert.h index b7ede0ee..47e53878 100644 --- a/src/util/Assert.h +++ b/src/util/Assert.h @@ -20,13 +20,14 @@ #pragma once #include "util/SourceLocation.h" +#include "util/log/Logger.h" #include +#include +#include #include -#include -template <> -struct fmt::formatter : ostream_formatter {}; +#include namespace util { @@ -41,9 +42,11 @@ assertImpl( ) { if (!condition) { - fmt::println(stderr, "Assertion '{}' failed at {}:{}:", expression, location.file_name(), location.line()); - fmt::println(stderr, format, std::forward(args)...); - fmt::println(stderr, "Stacktrace:\n{}\n", boost::stacktrace::stacktrace()); + LOG(LogService::fatal()) << "Assertion '" << expression << "' failed at " << location.file_name() << ":" + << location.line() << ":\n" + << fmt::format(format, std::forward(args)...) << "\n" + << "Stacktrace:\n" + << boost::stacktrace::stacktrace() << "\n"; std::abort(); } } diff --git a/src/util/log/Logger.cpp b/src/util/log/Logger.cpp index a6a8a664..7602d3da 100644 --- a/src/util/log/Logger.cpp +++ b/src/util/log/Logger.cpp @@ -32,6 +32,7 @@ #include #include #include +#include #include #include #include @@ -112,9 +113,14 @@ LogService::init(util::Config const& config) std::string format = config.valueOr("log_format", defaultFormat); if (config.valueOr("log_to_console", false)) { - boost::log::add_console_log(std::cout, keywords::format = format); + boost::log::add_console_log( + std::cout, keywords::format = format, keywords::filter = log_severity < Severity::FTL + ); } + // Always print fatal logs to cerr + boost::log::add_console_log(std::cerr, keywords::format = format, keywords::filter = log_severity >= Severity::FTL); + if (auto logDir = config.maybeValue("log_directory"); logDir) { boost::filesystem::path dirPath{logDir.value()}; if (!boost::filesystem::exists(dirPath)) diff --git a/unittests/util/AssertTests.cpp b/unittests/util/AssertTests.cpp index 83a818a7..9004f8f0 100644 --- a/unittests/util/AssertTests.cpp +++ b/unittests/util/AssertTests.cpp @@ -28,5 +28,5 @@ TEST(AssertTests, assertTrue) TEST(AssertTests, assertFalse) { - EXPECT_DEATH({ ASSERT(false, "failure"); }, "failure"); + EXPECT_DEATH({ ASSERT(false, "failure"); }, ".*"); }