summaryrefslogtreecommitdiff
path: root/asl/logging
diff options
context:
space:
mode:
Diffstat (limited to 'asl/logging')
-rw-r--r--asl/logging/logging.cpp10
-rw-r--r--asl/logging/logging.hpp6
-rw-r--r--asl/logging/logging_tests.cpp7
3 files changed, 18 insertions, 5 deletions
diff --git a/asl/logging/logging.cpp b/asl/logging/logging.cpp
index edf065d..2cb9a3f 100644
--- a/asl/logging/logging.cpp
+++ b/asl/logging/logging.cpp
@@ -3,14 +3,22 @@
// SPDX-License-Identifier: BSD-3-Clause
#include "asl/logging/logging.hpp"
+
+#include "asl/containers/intrusive_list.hpp"
+#include "asl/formatting/format.hpp"
#include "asl/io/print.hpp"
+#include "asl/io/writer.hpp"
#include "asl/strings/string_builder.hpp"
+#include "asl/strings/string_view.hpp"
+#include "asl/types/span.hpp"
// @Todo Don't use internal get_stdout_writer, make console module
+// NOLINTNEXTLINE(*-avoid-non-const-global-variables)
static asl::log::DefaultLogger<asl::Writer*> g_default_logger{asl::print_internals::get_stdout_writer()};
// @Todo Protect the loggers list being a mutex
+// NOLINTNEXTLINE(*-avoid-non-const-global-variables)
static asl::IntrusiveList<asl::log::Logger> g_loggers(&g_default_logger);
void asl::log::register_logger(Logger* logger)
@@ -56,7 +64,7 @@ void asl::log::log_inner(
StringWriter msg_writer{};
asl::format_internals::format(&msg_writer, fmt, args);
- message m{
+ const message m{
.level = l,
.message = msg_writer.as_string_view(),
.location = sl,
diff --git a/asl/logging/logging.hpp b/asl/logging/logging.hpp
index 9ff0d08..9c74b31 100644
--- a/asl/logging/logging.hpp
+++ b/asl/logging/logging.hpp
@@ -48,7 +48,11 @@ class DefaultLogger : public DefaultLoggerBase
W m_writer;
public:
- explicit constexpr DefaultLogger(W&& writer) : m_writer{ASL_FWD(writer)} {}
+ template<typename U>
+ explicit constexpr DefaultLogger(U&& writer)
+ requires constructible_from<W, U&&>
+ : m_writer{std::forward<U>(writer)}
+ {}
constexpr void log(const message& m) override
{
diff --git a/asl/logging/logging_tests.cpp b/asl/logging/logging_tests.cpp
index ec47a8a..ea5bd2a 100644
--- a/asl/logging/logging_tests.cpp
+++ b/asl/logging/logging_tests.cpp
@@ -2,10 +2,11 @@
//
// SPDX-License-Identifier: BSD-3-Clause
+#include "asl/base/defer.hpp"
#include "asl/logging/logging.hpp"
-#include "asl/testing/testing.hpp"
#include "asl/strings/string_builder.hpp"
-#include "asl/base/defer.hpp"
+#include "asl/strings/string_view.hpp"
+#include "asl/testing/testing.hpp"
ASL_TEST(log)
{
@@ -27,6 +28,6 @@ ASL_TEST(custom_writer)
ASL_LOG_INFO("Hello");
auto sv = string_writer.as_string_view();
- ASL_TEST_EXPECT(sv == "[ INFO ] asl/logging/logging_tests.cpp:27: Hello\n");
+ ASL_TEST_EXPECT(sv == "[ INFO ] asl/logging/logging_tests.cpp:28: Hello\n");
}