Как сделать регистрацию в C ++ более лаконичной

Я использую log4cxx для входа в C ++ проектов. В настоящее время мой журнал звонков выглядит

LOG4CXX_INFO(log4cxx::Logger::getRootLogger(), "parsed " << lc << " lines");

Это все еще слишком многословно и трудно запомнить. В идеале, запись в журнал должна выглядеть примерно так:

log.debug("parsed %d lines", lc)

а) Что я могу сделать, чтобы получить более краткие заявления о регистрации?
б) Можно ли использовать printf-подобный синтаксис?

0

Решение

Вы можете использовать библиотеку Boost.Format http://www.boost.org/doc/libs/1_52_0/libs/format/doc/format.html

PS. Пример вспомогательных функций C ++ 11:

#include <boost/format.hpp>
#include <iostream>

void
log (const boost::format &fmt)
{
std::cout << fmt;
}

template<typename T, typename... Args>
void
log (boost::format &fmt, const T &v, Args... args)
{
log (boost::format (fmt) % v, args ...);
}

template<typename... Args>
void
log (const char *fmt, Args... args)
{
boost::format f (fmt);
log (f, args ...);
}

int
main ()
{
log ("some number %1% and some other %2%", 1, 3.5f);
}
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]