出力ログ メッセージを色分けするためにカスタムboost::logフォーマッタを使用していますが、 TimeStampおよびThreadID属性をログに追加する適切な方法が見つかりません。ファイルロギングを使用しているときは、パラメーターkeywords::format = "[%TimeStamp%] [%ThreadID%] [%Severity%]: %Message%"
として書き込むだけです。logging::add_file_log
次のカスタム フォーマッタで同様の効果を得たいと考えています。
void coloring_formatter(const logging::record_view& record,
logging::formatting_ostream& stream)
{
auto severity = record[logging::trivial::severity];
assert(severity);
stream << "\e[1m";
switch (severity.get())
{
case logging::trivial::severity_level::trace:
stream << "\e[97m";
break;
case logging::trivial::severity_level::debug:
stream << "\e[34m";
break;
case logging::trivial::severity_level::info:
stream << "\e[32m";
break;
case logging::trivial::severity_level::warning:
stream << "\e[93m";
break;
case logging::trivial::severity_level::error:
stream << "\e[91m";
break;
case logging::trivial::severity_level::fatal:
stream << "\e[41m";
break;
}
stream // << output TimeStamp
// << output ThreadID
<< "[" << severity << "] "
<< record[logging::expressions::smessage]
<< "\e[0m";
}