Just got to know that in order to log a value of
boost::filesystem::path with
log4cpp, it is just as simple as follows:
Category *pRoot = NULL;
PropertyConfigurator::configure("log4c.properties");
pRoot = &(Category::getRoot());
path targetPath("./the_path");
pRoot->info("%s", targetPath.c_str());
Assuming I have the following content in
log4c.properties:
log4cpp.rootCategory=DEBUG, rootAppender
log4cpp.appender.rootAppender=ConsoleAppender
log4cpp.appender.rootAppender.layout=PatternLayout
log4cpp.appender.rootAppender.layout.ConversionPattern=%d [%p] %m%n
...
But before I got to know this, I heard there are people mention that the conversion from
c_str() to
const char* would not be straightforward. And it would require
wcstombs() to do the conversion, thus I come out this:
...
char pathName[50];
memset(pathName, '\0', sizeof(pathName));
wcstombs(pathName, targetPath.wstring().c_str(), sizeof(targetPath.native().length()));
...
Is this what they mean? Or I misunderstood something? No worry,
log4cpp::Category::xxx() do accept
c_str().
No comments:
Post a Comment