feat: LeveledSink is no more

This commit is contained in:
Oliver 2022-10-20 12:51:54 +02:00
parent f47fe4bae0
commit 027f901dbe
Signed by untrusted user: okaestne
GPG Key ID: 06A81B143EA9588F
2 changed files with 18 additions and 31 deletions

View File

@ -144,14 +144,6 @@ void log(Level lvl, std::stringbuf* strb) {
}
}
const LeveledSink fatal{Level::fatal};
const LeveledSink error{Level::error};
const LeveledSink warn{Level::warn};
const LeveledSink note{Level::note};
const LeveledSink info{Level::info};
const LeveledSink debug{Level::debug};
const LeveledSink trace{Level::trace};
/*
* class Entry
*/

41
Log.h
View File

@ -47,8 +47,8 @@ public:
using MetaFunction = std::function<std::ostream&(std::ostream&, const Entry&)>;
template <typename T> Entry& operator<<(const T& msg) {
ss << msg;
template <typename T> Entry& operator<<(T&& msg) {
ss << std::forward<T>(msg);
return *this;
}
};
@ -58,27 +58,22 @@ extern std::vector<Entry::MetaFunction> entryMetaFunctions;
std::ostream& defaultEntryMetaTime(std::ostream&, const Entry&);
std::ostream& defaultEntryMetaLevel(std::ostream&, const Entry&);
class LeveledSink {
private:
Level level;
// copy Level values in Log namespace
constexpr Level off = Level::off;
constexpr Level fatal = Level::fatal;
constexpr Level error = Level::error;
constexpr Level warn = Level::warn;
constexpr Level note = Level::note;
constexpr Level info = Level::info;
constexpr Level debug = Level::debug;
constexpr Level trace = Level::trace;
public:
explicit LeveledSink(Level level) noexcept : level{level} {};
template <typename T> Entry operator<<(const T& msg) const {
Entry entry{level};
entry << msg;
return entry;
}
};
// LeveledSinks
extern const LeveledSink fatal;
extern const LeveledSink error;
extern const LeveledSink warn;
extern const LeveledSink note;
extern const LeveledSink info;
extern const LeveledSink debug;
extern const LeveledSink trace;
// create Log lines (Entry objects) on using operator<< on Level values
template <typename T>
Entry operator<<(const Level lvl, T&& msg) {
Entry e{lvl};
e << std::forward<T>(msg);
return e;
}
} // namespace Log