|
|
|
@ -75,7 +75,7 @@ static int to12h(const tm &t)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Abbreviated weekday name
|
|
|
|
|
static const char* days[]{"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
|
|
|
|
|
static const char *days[]{"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"};
|
|
|
|
|
class a_formatter : public flag_formatter
|
|
|
|
|
{
|
|
|
|
|
void format(const details::log_msg &, const std::tm &tm_time, fmt::memory_buffer &dest) override
|
|
|
|
@ -85,7 +85,7 @@ class a_formatter : public flag_formatter
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// Full weekday name
|
|
|
|
|
static const char* full_days[]{"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
|
|
|
|
|
static const char *full_days[]{"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
|
|
|
|
|
class A_formatter : public flag_formatter
|
|
|
|
|
{
|
|
|
|
|
void format(const details::log_msg &, const std::tm &tm_time, fmt::memory_buffer &dest) override
|
|
|
|
@ -95,7 +95,7 @@ class A_formatter : public flag_formatter
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// Abbreviated month
|
|
|
|
|
static const char* months[]{"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec"};
|
|
|
|
|
static const char *months[]{"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec"};
|
|
|
|
|
class b_formatter : public flag_formatter
|
|
|
|
|
{
|
|
|
|
|
void format(const details::log_msg &, const std::tm &tm_time, fmt::memory_buffer &dest) override
|
|
|
|
@ -105,7 +105,7 @@ class b_formatter : public flag_formatter
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// Full month name
|
|
|
|
|
static const char* full_months[]{
|
|
|
|
|
static const char *full_months[]{
|
|
|
|
|
"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
|
|
|
|
|
class B_formatter : public flag_formatter
|
|
|
|
|
{
|
|
|
|
@ -541,24 +541,24 @@ private:
|
|
|
|
|
class pattern_formatter SPDLOG_FINAL : public formatter
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
explicit pattern_formatter(
|
|
|
|
|
std::string pattern, pattern_time_type time_type = pattern_time_type::local, std::string eol = spdlog::details::os::default_eol)
|
|
|
|
|
: pattern_(std::move(pattern))
|
|
|
|
|
, eol_(std::move(eol))
|
|
|
|
|
, pattern_time_type_(time_type)
|
|
|
|
|
, last_log_secs_(0)
|
|
|
|
|
{
|
|
|
|
|
std::memset(&cached_tm_, 0, sizeof(cached_tm_));
|
|
|
|
|
compile_pattern_(pattern_);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
pattern_formatter(const pattern_formatter &other) = delete;
|
|
|
|
|
pattern_formatter &operator=(const pattern_formatter &other) = delete;
|
|
|
|
|
|
|
|
|
|
virtual std::unique_ptr<formatter> clone() const override
|
|
|
|
|
{
|
|
|
|
|
return std::unique_ptr<formatter>(new pattern_formatter(pattern_, pattern_time_type_, eol_));
|
|
|
|
|
}
|
|
|
|
|
explicit pattern_formatter(
|
|
|
|
|
std::string pattern, pattern_time_type time_type = pattern_time_type::local, std::string eol = spdlog::details::os::default_eol)
|
|
|
|
|
: pattern_(std::move(pattern))
|
|
|
|
|
, eol_(std::move(eol))
|
|
|
|
|
, pattern_time_type_(time_type)
|
|
|
|
|
, last_log_secs_(0)
|
|
|
|
|
{
|
|
|
|
|
std::memset(&cached_tm_, 0, sizeof(cached_tm_));
|
|
|
|
|
compile_pattern_(pattern_);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
pattern_formatter(const pattern_formatter &other) = delete;
|
|
|
|
|
pattern_formatter &operator=(const pattern_formatter &other) = delete;
|
|
|
|
|
|
|
|
|
|
virtual std::unique_ptr<formatter> clone() const override
|
|
|
|
|
{
|
|
|
|
|
return std::unique_ptr<formatter>(new pattern_formatter(pattern_, pattern_time_type_, eol_));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void format(const details::log_msg &msg, fmt::memory_buffer &dest) override
|
|
|
|
|
{
|
|
|
|
@ -579,7 +579,7 @@ public:
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
std::string pattern_;
|
|
|
|
|
std::string pattern_;
|
|
|
|
|
std::string eol_;
|
|
|
|
|
pattern_time_type pattern_time_type_;
|
|
|
|
|
std::tm cached_tm_;
|
|
|
|
@ -742,10 +742,10 @@ private:
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void compile_pattern_(const std::string &pattern)
|
|
|
|
|
{
|
|
|
|
|
{
|
|
|
|
|
auto end = pattern.end();
|
|
|
|
|
std::unique_ptr<details::aggregate_formatter> user_chars;
|
|
|
|
|
formatters_.clear();
|
|
|
|
|
formatters_.clear();
|
|
|
|
|
for (auto it = pattern.begin(); it != end; ++it)
|
|
|
|
|
{
|
|
|
|
|
if (*it == '%')
|
|
|
|
|