如何使C ++日志更简洁

时间:2012-11-27 14:43:45

标签: c++ logging log4cxx

我使用log4cxx登录C ++项目。目前,我的日志调用看起来像

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

这仍然过于冗长且难以记忆。理想情况下,日志记录语句看起来类似于

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

a)我可以做些什么来获得更简洁的日志记录? b)是否可以使用类似printf的语法?

1 个答案:

答案 0 :(得分:2)

您可以使用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);
}