From a5d95afb96eb9a3b65d82f5f84bf8e4a4fb4c8ac Mon Sep 17 00:00:00 2001 From: Rutger Broekhoff Date: Fri, 28 Aug 2026 21:12:55 +0200 Subject: clang-format C++ sources --- server/src/log.cppm | 253 ++++++++++++++++++++++++++++------------------------ 1 file changed, 138 insertions(+), 115 deletions(-) (limited to 'server/src/log.cppm') diff --git a/server/src/log.cppm b/server/src/log.cppm index d7e2bff..0bfdf7d 100644 --- a/server/src/log.cppm +++ b/server/src/log.cppm @@ -12,137 +12,160 @@ import std; namespace routemon::log { - export enum class level : std::uint8_t { - debug, - info, - warn, - error, +export enum class level : std::uint8_t { + debug, + info, + warn, + error, +}; + +namespace { + +auto operator<<(std::ostream& os, level lvl) -> std::ostream& +{ + switch (lvl) + { + case level::debug: + os << "dbg"; + break; + case level::info: + os << "inf"; + break; + case level::warn: + os << "wrn"; + break; + case level::error: + os << "err"; + break; + } + return os; +} + +} // namespace + +export class sink +{ + std::atomic lvl_; + std::ostream& os_ = std::cout; + + struct tmp_message + { + level lvl; + std::string_view component; + std::string_view txt; + std::map const& attrs; }; - namespace { - - auto operator<<(std::ostream& os, level lvl) -> std::ostream& { - switch (lvl) { - case level::debug: os << "dbg"; break; - case level::info: os << "inf"; break; - case level::warn: os << "wrn"; break; - case level::error: os << "err"; break; - } - return os; - } - - } // namespace (unique) - - export class sink { - std::atomic lvl_; - std::ostream& os_ = std::cout; - - struct tmp_message { - level lvl; - std::string_view component; - std::string_view txt; - std::map const& attrs; - }; - - auto write(tmp_message msg) -> void { - auto sos = std::osyncstream{os_}; - sos << "[" << msg.lvl; - if (!msg.component.empty()) - sos << " " << msg.component; - sos << "] " << msg.txt; - for (auto const& [k, v] : msg.attrs) { - sos << " " << k << "=" << std::quoted(v); - } - sos << '\n'; - } - - explicit sink(level lvl) - : lvl_{lvl} - {} - - friend auto make_sink(level lvl) -> std::shared_ptr; - friend class logger; - - public: - [[nodiscard]] auto level() const -> enum level { - return lvl_; - } - - auto set_level(enum level lvl) -> void { - lvl_ = lvl; + auto write(tmp_message msg) -> void + { + auto sos = std::osyncstream{os_}; + sos << "[" << msg.lvl; + if (!msg.component.empty()) + sos << " " << msg.component; + sos << "] " << msg.txt; + for (auto const& [k, v] : msg.attrs) + { + sos << " " << k << "=" << std::quoted(v); } - }; - - export auto make_sink(level lvl) -> std::shared_ptr { - return std::shared_ptr{new sink{lvl}}; + sos << '\n'; } - export class logger { - std::shared_ptr sink_; - std::string component_; - std::map attrs_; - - template - auto log_at(std::string_view fmt, std::format_args args) -> logger& { - if (sink_->level() <= lvl) - sink_->write(sink::tmp_message{ - .lvl = lvl, - .component = component_, - .txt = std::vformat(fmt, args), - .attrs = attrs_, + explicit sink(level lvl) : lvl_{lvl} {} + + friend auto make_sink(level lvl) -> std::shared_ptr; + friend class logger; + +public: + [[nodiscard]] auto level() const -> enum level { return lvl_; } + + auto set_level(enum level lvl) -> void { lvl_ = lvl; } +}; + +export auto make_sink(level lvl) -> std::shared_ptr +{ + return std::shared_ptr{new sink{lvl}}; +} + +export class logger +{ + std::shared_ptr sink_; + std::string component_; + std::map attrs_; + + template + auto log_at(std::string_view fmt, std::format_args args) -> logger& + { + if (sink_->level() <= lvl) + sink_->write( + sink::tmp_message{ + .lvl = lvl, + .component = component_, + .txt = std::vformat(fmt, args), + .attrs = attrs_, }); - return *this; - } + return *this; + } - public: - explicit logger(std::shared_ptr const& sink) - : sink_{sink} +public: + explicit logger(std::shared_ptr const& sink) : sink_{sink} + { + if (!sink) { - if (!sink) { - throw std::invalid_argument{"logger sink may not be null"}; - } + throw std::invalid_argument{"logger sink may not be null"}; } + } - [[nodiscard]] auto sub(std::string_view component) const -> logger { - auto l = *this; - if (l.component_.empty()) { - l.component_ = component; - } else { - l.component_ += "."; - l.component_ += component; - } - return l; + [[nodiscard]] auto sub(std::string_view component) const -> logger + { + auto l = *this; + if (l.component_.empty()) + { + l.component_ = component; } - - [[nodiscard]] auto with(std::string const& k, std::string&& v) const -> logger { - auto l = *this; - l.attrs_[k] = std::move(v); - return l; + else + { + l.component_ += "."; + l.component_ += component; } + return l; + } - [[nodiscard]] auto with(std::string const& k, std::string_view v) const -> logger { - return with(k, std::string{v}); - } + [[nodiscard]] auto with(std::string const& k, std::string&& v) const -> logger + { + auto l = *this; + l.attrs_[k] = std::move(v); + return l; + } - template - auto debug(std::format_string fmt, Args&&... args) -> logger& { - return log_at(fmt.get(), std::make_format_args(args...)); - } + [[nodiscard]] auto with(std::string const& k, std::string_view v) const + -> logger + { + return with(k, std::string{v}); + } - template - auto info(std::format_string fmt, Args&&... args) -> logger& { - return log_at(fmt.get(), std::make_format_args(args...)); - } + template + auto debug(std::format_string fmt, Args&&... args) -> logger& + { + return log_at(fmt.get(), std::make_format_args(args...)); + } - template - auto warn(std::format_string fmt, Args&&... args) -> logger& { - return log_at(fmt.get(), std::make_format_args(args...)); - } + template + auto info(std::format_string fmt, Args&&... args) -> logger& + { + return log_at(fmt.get(), std::make_format_args(args...)); + } - template - auto error(std::format_string fmt, Args&&... args) -> logger& { - return log_at(fmt.get(), std::make_format_args(args...)); - } - }; + template + auto warn(std::format_string fmt, Args&&... args) -> logger& + { + return log_at(fmt.get(), std::make_format_args(args...)); + } + + template + auto error(std::format_string fmt, Args&&... args) -> logger& + { + return log_at(fmt.get(), std::make_format_args(args...)); + } +}; } // namespace routemon::log -- cgit v1.3