pid support (added the %P option to formatter)

This commit is contained in:
gabime 2016-12-02 17:09:00 +02:00
parent cda27d2bff
commit cf73f02eaf
2 changed files with 27 additions and 1 deletions

View File

@ -356,6 +356,17 @@ inline std::string errno_str(int err_num)
#endif #endif
} }
inline int pid()
{
#ifdef _WIN32
return ::_getpid();
#else
return static_cast<int>(::getpid());
#endif
}
} //os } //os
} //details } //details
} //spdlog } //spdlog

View File

@ -356,7 +356,7 @@ private:
//Thread id // Thread id
class t_formatter:public flag_formatter class t_formatter:public flag_formatter
{ {
void format(details::log_msg& msg, const std::tm&) override void format(details::log_msg& msg, const std::tm&) override
@ -365,6 +365,15 @@ class t_formatter:public flag_formatter
} }
}; };
// Current pid
class pid_formatter:public flag_formatter
{
void format(details::log_msg& msg, const std::tm&) override
{
msg.formatted << details::os::pid();
}
};
class v_formatter:public flag_formatter class v_formatter:public flag_formatter
{ {
@ -453,6 +462,8 @@ class full_formatter:public flag_formatter
} }
}; };
} }
} }
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
@ -611,6 +622,10 @@ inline void spdlog::pattern_formatter::handle_flag(char flag)
_formatters.push_back(std::unique_ptr<details::flag_formatter>(new details::full_formatter())); _formatters.push_back(std::unique_ptr<details::flag_formatter>(new details::full_formatter()));
break; break;
case ('P'):
_formatters.push_back(std::unique_ptr<details::flag_formatter>(new details::pid_formatter()));
break;
default: //Unkown flag appears as is default: //Unkown flag appears as is
_formatters.push_back(std::unique_ptr<details::flag_formatter>(new details::ch_formatter('%'))); _formatters.push_back(std::unique_ptr<details::flag_formatter>(new details::ch_formatter('%')));
_formatters.push_back(std::unique_ptr<details::flag_formatter>(new details::ch_formatter(flag))); _formatters.push_back(std::unique_ptr<details::flag_formatter>(new details::ch_formatter(flag)));