我正在使用 log4cxx 登录 C++ 项目。目前,我的日志调用看起来像
LOG4CXX_INFO(log4cxx::Logger::getRootLogger(), "parsed " << lc << " lines");
这仍然太冗长且难以记住。理想情况下,日志记录语句看起来类似于
log.debug("parsed %d lines", lc)
a) 我能做些什么来获得更简洁的日志记录语句?b) 是否可以使用类似printf
- 的语法?
您可以使用 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);
}