|
|
|
@ -545,7 +545,7 @@ public:
|
|
|
|
|
pattern_formatter(const pattern_formatter &other) = delete;
|
|
|
|
|
pattern_formatter &operator=(const pattern_formatter &other) = delete;
|
|
|
|
|
|
|
|
|
|
virtual std::unique_ptr<formatter> clone() const override
|
|
|
|
|
std::unique_ptr<formatter> clone() const override
|
|
|
|
|
{
|
|
|
|
|
return std::unique_ptr<formatter>(new pattern_formatter(pattern_, pattern_time_type_, eol_));
|
|
|
|
|
}
|
|
|
|
@ -588,145 +588,146 @@ private:
|
|
|
|
|
|
|
|
|
|
void handle_flag_(char flag)
|
|
|
|
|
{
|
|
|
|
|
using flag_formatter_ptr = std::unique_ptr<details::flag_formatter>;
|
|
|
|
|
switch (flag)
|
|
|
|
|
{
|
|
|
|
|
// logger name
|
|
|
|
|
case 'n':
|
|
|
|
|
formatters_.emplace_back(new details::name_formatter());
|
|
|
|
|
formatters_.push_back(flag_formatter_ptr(new details::name_formatter()));
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case 'l':
|
|
|
|
|
formatters_.emplace_back(new details::level_formatter());
|
|
|
|
|
formatters_.push_back(flag_formatter_ptr(new details::level_formatter()));
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case 'L':
|
|
|
|
|
formatters_.emplace_back(new details::short_level_formatter());
|
|
|
|
|
formatters_.push_back(flag_formatter_ptr(new details::short_level_formatter()));
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case ('t'):
|
|
|
|
|
formatters_.emplace_back(new details::t_formatter());
|
|
|
|
|
formatters_.push_back(flag_formatter_ptr(new details::t_formatter()));
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case ('v'):
|
|
|
|
|
formatters_.emplace_back(new details::v_formatter());
|
|
|
|
|
formatters_.push_back(flag_formatter_ptr(new details::v_formatter()));
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case ('a'):
|
|
|
|
|
formatters_.emplace_back(new details::a_formatter());
|
|
|
|
|
formatters_.push_back(flag_formatter_ptr(new details::a_formatter()));
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case ('A'):
|
|
|
|
|
formatters_.emplace_back(new details::A_formatter());
|
|
|
|
|
formatters_.push_back(flag_formatter_ptr(new details::A_formatter()));
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case ('b'):
|
|
|
|
|
case ('h'):
|
|
|
|
|
formatters_.emplace_back(new details::b_formatter());
|
|
|
|
|
formatters_.push_back(flag_formatter_ptr(new details::b_formatter()));
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case ('B'):
|
|
|
|
|
formatters_.emplace_back(new details::B_formatter());
|
|
|
|
|
formatters_.push_back(flag_formatter_ptr(new details::B_formatter()));
|
|
|
|
|
break;
|
|
|
|
|
case ('c'):
|
|
|
|
|
formatters_.emplace_back(new details::c_formatter());
|
|
|
|
|
formatters_.push_back(flag_formatter_ptr(new details::c_formatter()));
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case ('C'):
|
|
|
|
|
formatters_.emplace_back(new details::C_formatter());
|
|
|
|
|
formatters_.push_back(flag_formatter_ptr(new details::C_formatter()));
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case ('Y'):
|
|
|
|
|
formatters_.emplace_back(new details::Y_formatter());
|
|
|
|
|
formatters_.push_back(flag_formatter_ptr(new details::Y_formatter()));
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case ('D'):
|
|
|
|
|
case ('x'):
|
|
|
|
|
formatters_.emplace_back(new details::D_formatter());
|
|
|
|
|
formatters_.push_back(flag_formatter_ptr(new details::D_formatter()));
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case ('m'):
|
|
|
|
|
formatters_.emplace_back(new details::m_formatter());
|
|
|
|
|
formatters_.push_back(flag_formatter_ptr(new details::m_formatter()));
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case ('d'):
|
|
|
|
|
formatters_.emplace_back(new details::d_formatter());
|
|
|
|
|
formatters_.push_back(flag_formatter_ptr(new details::d_formatter()));
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case ('H'):
|
|
|
|
|
formatters_.emplace_back(new details::H_formatter());
|
|
|
|
|
formatters_.push_back(flag_formatter_ptr(new details::H_formatter()));
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case ('I'):
|
|
|
|
|
formatters_.emplace_back(new details::I_formatter());
|
|
|
|
|
formatters_.push_back(flag_formatter_ptr(new details::I_formatter()));
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case ('M'):
|
|
|
|
|
formatters_.emplace_back(new details::M_formatter());
|
|
|
|
|
formatters_.push_back(flag_formatter_ptr(new details::M_formatter()));
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case ('S'):
|
|
|
|
|
formatters_.emplace_back(new details::S_formatter());
|
|
|
|
|
formatters_.push_back(flag_formatter_ptr(new details::S_formatter()));
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case ('e'):
|
|
|
|
|
formatters_.emplace_back(new details::e_formatter());
|
|
|
|
|
formatters_.push_back(flag_formatter_ptr(new details::e_formatter()));
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case ('f'):
|
|
|
|
|
formatters_.emplace_back(new details::f_formatter());
|
|
|
|
|
formatters_.push_back(flag_formatter_ptr(new details::f_formatter()));
|
|
|
|
|
break;
|
|
|
|
|
case ('F'):
|
|
|
|
|
formatters_.emplace_back(new details::F_formatter());
|
|
|
|
|
formatters_.push_back(flag_formatter_ptr(new details::F_formatter()));
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case ('E'):
|
|
|
|
|
formatters_.emplace_back(new details::E_formatter());
|
|
|
|
|
formatters_.push_back(flag_formatter_ptr(new details::E_formatter()));
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case ('p'):
|
|
|
|
|
formatters_.emplace_back(new details::p_formatter());
|
|
|
|
|
formatters_.push_back(flag_formatter_ptr(new details::p_formatter()));
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case ('r'):
|
|
|
|
|
formatters_.emplace_back(new details::r_formatter());
|
|
|
|
|
formatters_.push_back(flag_formatter_ptr(new details::r_formatter()));
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case ('R'):
|
|
|
|
|
formatters_.emplace_back(new details::R_formatter());
|
|
|
|
|
formatters_.push_back(flag_formatter_ptr(new details::R_formatter()));
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case ('T'):
|
|
|
|
|
case ('X'):
|
|
|
|
|
formatters_.emplace_back(new details::T_formatter());
|
|
|
|
|
formatters_.push_back(flag_formatter_ptr(new details::T_formatter()));
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case ('z'):
|
|
|
|
|
formatters_.emplace_back(new details::z_formatter());
|
|
|
|
|
formatters_.push_back(flag_formatter_ptr(new details::z_formatter()));
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case ('+'):
|
|
|
|
|
formatters_.emplace_back(new details::full_formatter());
|
|
|
|
|
formatters_.push_back(flag_formatter_ptr(new details::full_formatter()));
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case ('P'):
|
|
|
|
|
formatters_.emplace_back(new details::pid_formatter());
|
|
|
|
|
formatters_.push_back(flag_formatter_ptr(new details::pid_formatter()));
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case ('i'):
|
|
|
|
|
formatters_.emplace_back(new details::i_formatter());
|
|
|
|
|
formatters_.push_back(flag_formatter_ptr(new details::i_formatter()));
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case ('^'):
|
|
|
|
|
formatters_.emplace_back(new details::color_start_formatter());
|
|
|
|
|
formatters_.push_back(flag_formatter_ptr(new details::color_start_formatter()));
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case ('$'):
|
|
|
|
|
formatters_.emplace_back(new details::color_stop_formatter());
|
|
|
|
|
formatters_.push_back(flag_formatter_ptr(new details::color_stop_formatter()));
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
default: // Unknown flag appears as is
|
|
|
|
|
formatters_.emplace_back(new details::ch_formatter('%'));
|
|
|
|
|
formatters_.emplace_back(new details::ch_formatter(flag));
|
|
|
|
|
formatters_.push_back(flag_formatter_ptr(new details::ch_formatter('%')));
|
|
|
|
|
formatters_.push_back(flag_formatter_ptr(new details::ch_formatter(flag)));
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|