2013-09-13 4 views
3

Я использую Boost, 1,54 Журнал и я инициализировать свою регистрацию следующим образом:неправильно подталкивания формат журнала временной метки

namespace logging = boost::log; 
namespace src = boost::log::sources; 
namespace expr = boost::log::expressions; 
namespace sinks = boost::log::sinks; 
namespace attrs = boost::log::attributes; 
namespace keywords = boost::log::keywords; 

BOOST_LOG_ATTRIBUTE_KEYWORD(line_id, "LineID", unsigned int) 
BOOST_LOG_ATTRIBUTE_KEYWORD(severity, "Severity", severity_level) 
BOOST_LOG_ATTRIBUTE_KEYWORD(tag_attr, "Tag", std::string) 
BOOST_LOG_ATTRIBUTE_KEYWORD(timestamp, "TimeStamp", boost::posix_time::ptime) 

logging::add_common_attributes(); 
boost::shared_ptr<logging::core> core = logging::core::get(); 

// setup console log 
logging::add_console_log (
    std::clog, 
    keywords::filter = severity >= debug, 
    keywords::format = (
     expr::stream << expr::format_date_time(timestamp, "%Y-%m-%d %H:%M:%S") << 
      line_id << " [" << severity << "] " << expr::smessage 
    ) 
); 

и это образец материала на выходе:

2013-09-13 10:17:471 [warn] You are running in debug mode - assertions are enabled. 
2013-09-13 10:17:472 [info] loading data completed 
2013-09-13 10:17:473 [debug] applying xxx completed 
2013-09-13 10:17:474 [debug] computing xxx completed 
2013-09-13 10:17:475 [debug] xxx completed 
2013-09-13 10:17:476 [info] xxx completed 
2013-09-13 10:17:477 [debug] xxx completed 
2013-09-13 10:17:478 [debug] computing xxx completed 
2013-09-13 10:17:479 [info] testing xxx completed 
2013-09-13 10:17:4710 [info] xxx 
2013-09-13 10:17:4711 [debug] xxx completed 

выходные секунды метки времени являются полностью неправильными, но согласно документации Boost Log %S - правильная настройка форматирования в считанные секунды. Будет ли это ошибкой?

+1

Пожалуйста, добавьте включены заголовки, чтобы позволить другим использовать MWE. Я наткнулся на «определение пространства имен не разрешено» в 'BOOST_LOG_ATTRIBUTE_KEYWORD (line_id,« LineID », unsigned int)' –

ответ

7

У вас нет места между временем и line_id, поэтому они работают вместе.

+0

Хороший улов. Спасибо! О, мужик! –

2

В противном случае замените ключевые слова :: формат по следующему коду:

/*< log record format >*/ 
    keywords::format = 
    (
     expr::stream 
     //<< std::hex //To print the LineID in Hexadecimal format 
     << std::setw(8) << std::setfill('0') 
     << expr::attr< unsigned int >("LineID") 
     << "\t" 
     << expr::format_date_time<boost::posix_time::ptime>("TimeStamp","%H:%M:%S.%f") 
     << "\t: <" << logging::trivial::severity 
     << "> \t" << expr::smessage 
    ) 
Смежные вопросы