summaryrefslogtreecommitdiff
path: root/src/debug/log/Logger.hpp
diff options
context:
space:
mode:
authorVaxry <43317083+vaxerski@users.noreply.github.com>2025-12-18 17:23:24 +0000
committerGitHub <noreply@github.com>2025-12-18 17:23:24 +0000
commit6175ecd4c4ba817c4620f66a75e1e11da7c7a8ca (patch)
treecf73852f1fc08b1dcee5a3a7380f914aaad9c50a /src/debug/log/Logger.hpp
parentf88deb928a0f7dc02f427473f8c29e8f2bed14a3 (diff)
debug: move to hyprutils' logger (#12673)
Diffstat (limited to 'src/debug/log/Logger.hpp')
-rw-r--r--src/debug/log/Logger.hpp61
1 files changed, 61 insertions, 0 deletions
diff --git a/src/debug/log/Logger.hpp b/src/debug/log/Logger.hpp
new file mode 100644
index 00000000..d4e868de
--- /dev/null
+++ b/src/debug/log/Logger.hpp
@@ -0,0 +1,61 @@
+#pragma once
+
+#include <hyprutils/cli/Logger.hpp>
+
+#include "../../helpers/memory/Memory.hpp"
+#include "../../helpers/env/Env.hpp"
+
+namespace Log {
+ class CLogger {
+ public:
+ CLogger();
+ ~CLogger() = default;
+
+ void initIS(const std::string_view& IS);
+ void initCallbacks();
+
+ void log(Hyprutils::CLI::eLogLevel level, const std::string_view& str);
+
+ template <typename... Args>
+ //NOLINTNEXTLINE
+ void log(Hyprutils::CLI::eLogLevel level, std::format_string<Args...> fmt, Args&&... args) {
+ static bool TRACE = Env::isTrace();
+
+ if (!m_logsEnabled)
+ return;
+
+ if (level == Hyprutils::CLI::LOG_TRACE && !TRACE)
+ return;
+
+ std::string logMsg = "";
+
+ // no need for try {} catch {} because std::format_string<Args...> ensures that vformat never throw std::format_error
+ // because
+ // 1. any faulty format specifier that sucks will cause a compilation error.
+ // 2. and `std::bad_alloc` is catastrophic, (Almost any operation in stdlib could throw this.)
+ // 3. this is actually what std::format in stdlib does
+ logMsg += std::vformat(fmt.get(), std::make_format_args(args...));
+
+ log(level, logMsg);
+ }
+
+ const std::string& rolling();
+ Hyprutils::CLI::CLogger& hu();
+
+ private:
+ void recheckCfg();
+
+ Hyprutils::CLI::CLogger m_logger;
+ bool m_logsEnabled = true;
+ };
+
+ inline UP<CLogger> logger = makeUnique<CLogger>();
+
+ //
+ inline constexpr const Hyprutils::CLI::eLogLevel DEBUG = Hyprutils::CLI::LOG_DEBUG;
+ inline constexpr const Hyprutils::CLI::eLogLevel WARN = Hyprutils::CLI::LOG_WARN;
+ inline constexpr const Hyprutils::CLI::eLogLevel ERR = Hyprutils::CLI::LOG_ERR;
+ inline constexpr const Hyprutils::CLI::eLogLevel CRIT = Hyprutils::CLI::LOG_CRIT;
+ inline constexpr const Hyprutils::CLI::eLogLevel INFO = Hyprutils::CLI::LOG_DEBUG;
+ inline constexpr const Hyprutils::CLI::eLogLevel TRACE = Hyprutils::CLI::LOG_TRACE;
+};