summaryrefslogtreecommitdiffstats
path: root/server/src/log.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'server/src/log.cpp')
-rw-r--r--server/src/log.cpp30
1 files changed, 12 insertions, 18 deletions
diff --git a/server/src/log.cpp b/server/src/log.cpp
index bb9fde2..5953c14 100644
--- a/server/src/log.cpp
+++ b/server/src/log.cpp
@@ -30,17 +30,7 @@ auto sink::level() const -> enum level { return lvl_; }
30 30
31auto sink::set_level(enum level lvl) -> void { lvl_ = lvl; } 31auto sink::set_level(enum level lvl) -> void { lvl_ = lvl; }
32 32
33auto sink::write(tmp_message msg) -> void 33auto sink::write() -> std::osyncstream { return std::osyncstream{os_}; }
34{
35 auto sos = std::osyncstream{os_};
36 sos << "[" << msg.lvl;
37 if (!msg.component.empty())
38 sos << " " << msg.component;
39 sos << "] " << msg.txt;
40 for (auto const& [k, v] : msg.attrs)
41 sos << " " << k << "=" << std::quoted(v);
42 sos << std::endl; // we want the flush!
43}
44 34
45auto make_sink(level lvl) -> std::shared_ptr<sink> 35auto make_sink(level lvl) -> std::shared_ptr<sink>
46{ 36{
@@ -51,13 +41,17 @@ auto logger::log_at(log::level lvl, std::string_view fmt, std::format_args args)
51 -> logger& 41 -> logger&
52{ 42{
53 if (sink_->level() <= lvl) 43 if (sink_->level() <= lvl)
54 sink_->write( 44 {
55 sink::tmp_message{ 45 auto sos = sink_->write();
56 .lvl = lvl, 46 sos << "[" << lvl;
57 .component = component_, 47 if (!component_.empty())
58 .txt = std::vformat(fmt, args), 48 sos << " " << component_;
59 .attrs = attrs_, 49 sos << "] ";
60 }); 50 std::vprint_unicode(sos, fmt, args);
51 for (auto const& [k, v] : attrs_)
52 sos << " " << k << "=" << std::quoted(v);
53 sos << std::endl; // we want the flush!
54 }
61 return *this; 55 return *this;
62} 56}
63 57