summaryrefslogtreecommitdiff
path: root/src/logger.cc
diff options
context:
space:
mode:
authorJoel Klinghed <the_jk@spawned.biz>2025-10-19 00:12:50 +0200
committerJoel Klinghed <the_jk@spawned.biz>2025-10-19 00:31:19 +0200
commite7c74917191a4953d495295b65732aa3549ba753 (patch)
treefde3fc6080786b3e3e4526b3793bacbb390d2b17 /src/logger.cc
parent4f6ead7c2c646b6b866274299c05d08170d2dfb0 (diff)
Add new module websocket and use it
Implement /api/v1/events which will send out messages when things change, such as the main controller.
Diffstat (limited to 'src/logger.cc')
-rw-r--r--src/logger.cc34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/logger.cc b/src/logger.cc
index 21effff..104797f 100644
--- a/src/logger.cc
+++ b/src/logger.cc
@@ -1,6 +1,7 @@
#include "logger.hh"
#include <cstdint>
+#include <format>
#include <iostream>
#include <memory>
#include <string>
@@ -125,6 +126,34 @@ class StderrLogger : public BaseLogger {
bool const verbose_;
};
+class PrefixLogger : public Logger {
+ public:
+ PrefixLogger(Logger& logger, std::string prefix)
+ : logger_(logger), prefix_(std::move(prefix)) {}
+
+ void err(std::string_view message) override {
+ logger_.err(std::format("{}: {}", prefix_, message));
+ }
+
+ void warn(std::string_view message) override {
+ logger_.warn(std::format("{}: {}", prefix_, message));
+ }
+
+ void info(std::string_view message) override {
+ logger_.info(std::format("{}: {}", prefix_, message));
+ }
+
+#if !defined(NDEBUG)
+ void dbg(std::string_view message) override {
+ logger_.dbg(std::format("{}: {}", prefix_, message));
+ }
+#endif
+
+ private:
+ Logger& logger_;
+ std::string prefix_;
+};
+
} // namespace
[[nodiscard]]
@@ -142,4 +171,9 @@ std::unique_ptr<Logger> stderr(bool verbose) {
return std::make_unique<StderrLogger>(verbose);
}
+[[nodiscard]]
+std::unique_ptr<Logger> prefix(Logger& logger, std::string prefix) {
+ return std::make_unique<PrefixLogger>(logger, std::move(prefix));
+}
+
} // namespace logger