-static void loggerBackend(std::unique_ptr<Logging::Entry> entry) {
+static void loggerBackend(const Logging::Entry& entry) {
static thread_local std::stringstream buf;
buf.str("");
- buf << "msg=" << std::quoted(entry->message);
- if (entry->error) {
- buf << " oserror=" << std::quoted(entry->error.get());
+ buf << "msg=" << std::quoted(entry.message);
+ if (entry.error) {
+ buf << " oserror=" << std::quoted(entry.error.get());
}
- if (entry->name) {
- buf << " subsystem=" << std::quoted(entry->name.get());
+ if (entry.name) {
+ buf << " subsystem=" << std::quoted(entry.name.get());
}
- for (auto const& v: entry->values) {
+ for (auto const& v: entry.values) {
buf << " ";
buf << v.first << "=" << std::quoted(v.second);
}
- g_log << Logger::Urgency(entry->level) << buf.str() << endl;
+ g_log << Logger::Urgency(entry.level) << buf.str() << endl;
}
if (_level > _verbosity) {
return ;
}
- auto entry = std::unique_ptr<Entry>(new Entry());
- entry->level = _level;
- entry->name = _name;
- entry->message = msg;
- entry->error = err;
+ Entry entry;
+ entry.level = _level;
+ entry.name = _name;
+ entry.message = msg;
+ entry.error = err;
auto parent = _parent;
- entry->values.insert(_values.begin(), _values.end());
+ entry.values.insert(_values.begin(), _values.end());
while (parent) {
- entry->values.insert(parent->_values.begin(), parent->_values.end());
+ entry.values.insert(parent->_values.begin(), parent->_values.end());
parent = parent->_parent;
}
- _callback(std::move(entry));
+ _callback(entry);
}
void Logger::error(int err, const std::string& msg)
// template <>
// Loggable<std::string>::Loggable(const std::string& v): _t(v) {}
- typedef void(*EntryLogger)(std::unique_ptr<Entry>);
+ typedef void(*EntryLogger)(const Entry&);
class Logger: public Logr::Logger, public std::enable_shared_from_this<Logger>
{