experimenting with attribute formatting

pull/2687/head
Bailey Chittle 3 years ago
parent 5931f97569
commit ec8f97453f

@ -929,6 +929,58 @@ private:
log_clock::time_point last_message_time_;
};
// attribute formatting: stub
class attr_formatter_start final : public flag_formatter
{
public:
explicit attr_formatter_start(padding_info padinfo)
: flag_formatter(padinfo)
{}
void format(const details::log_msg &, const std::tm &, memory_buf_t &dest) override
{
fmt_helper::append_string_view("", dest);
}
};
class attr_formatter_stop final : public flag_formatter
{
public:
explicit attr_formatter_stop(padding_info padinfo)
: flag_formatter(padinfo)
{}
void format(const details::log_msg &, const std::tm &, memory_buf_t &dest) override
{
fmt_helper::append_string_view("", dest);
}
};
class attr_formatter_key final : public flag_formatter
{
public:
explicit attr_formatter_key(padding_info padinfo)
: flag_formatter(padinfo)
{}
void format(const details::log_msg &msg, const std::tm &, memory_buf_t &dest) override
{
for (const details::attr& a : msg.attributes) {
fmt_helper::append_string_view(a.key, dest);
}
}
};
class attr_formatter_value final : public flag_formatter
{
public:
explicit attr_formatter_value(padding_info padinfo)
: flag_formatter(padinfo)
{}
void format(const details::log_msg &msg, const std::tm &, memory_buf_t &dest) override
{
for (const details::attr& a : msg.attributes) {
fmt_helper::append_string_view(a.value, dest);
}
}
};
// Full info formatter
// pattern: [%Y-%m-%d %H:%M:%S.%e] [%n] [%l] [%s:%#] %v
class full_formatter final : public flag_formatter
@ -1320,6 +1372,22 @@ SPDLOG_INLINE void pattern_formatter::handle_flag_(char flag, details::padding_i
formatters_.push_back(details::make_unique<details::elapsed_formatter<Padder, std::chrono::seconds>>(padding));
break;
case ('['): // start attribute formatting
formatters_.push_back(details::make_unique<details::attr_formatter_start>(padding));
break;
case ('K'): // attribute key
formatters_.push_back(details::make_unique<details::attr_formatter_key>(padding));
break;
case ('V'): // attribute value
formatters_.push_back(details::make_unique<details::attr_formatter_value>(padding));
break;
case (']'): // stop attribute formatting
formatters_.push_back(details::make_unique<details::attr_formatter_stop>(padding));
break;
default: // Unknown flag appears as is
auto unknown_flag = details::make_unique<details::aggregate_formatter>();

Loading…
Cancel
Save