Приведите надстройку :: log :: expressions :: attr <std :: string> в std :: string
При использовании Boost.Log я пытаюсь сохранитьTimeStamp
такой форматтер как:
logging::add_file_log
(
keywords::file_name = "my.log",
keywords::format =
(
expr::stream
<< expr::format_date_time< boost::posix_time::ptime >("TimeStamp", "%Y-%m-%d %H:%M:%S")
<< "," << expr::attr< int >("Line")
<< " " << expr::attr< std::string >("File")
<< " " << logging::trivial::severity
<< " - " << expr::smessage
)
);
Говорят, что я не могу использовать другую форму форматирования, так как у меня будут большие трудности с"TimeStamp"
в мой пользовательский формат:
static void my_formatter(logging::record_view const& rec, logging::formatting_ostream& strm)
{
strm << logging::extract< boost::posix_time::ptime >("TimeStamp", rec);
выведет что-то вроде:2015-Jul-01 16:06:31.514053
пока меня интересуют только:"%Y-%m-%d %H:%M:%S"
, Однако первая форма чрезвычайно сложна в использовании, например, я не могу разыгратьexpr::attr< std::string >
к простомуstd::string
например:
logging::add_file_log
(
keywords::file_name = "my.log",
keywords::format =
(
expr::stream
<< expr::format_date_time< boost::posix_time::ptime >("TimeStamp", "%Y-%m-%d %H:%M:%S")
<< "," << expr::attr< int >("Line")
<< " " << boost::filesystem::path(expr::attr< std::string >("File"))
.filename().string()
<< " " << logging::trivial::severity
<< " - " << expr::smessage
)
);
Приведенный выше код даже не компилируется.
Есть ли простой способ как распечататьTimeStamp
используя мой пользовательский формат и в то же время использовать пользовательский приведение к строке, чтобы иметь возможность использоватьboost::filesystem::path::filename()
?