I want to log to different files in my code.
How can i do that in Log4cxx with xml configuration or programatically in code...
For dynamic components try this:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
void func(int k) {
std::string strName = "Log." + boost::lexical_cast(k);
log4cxx::LoggerPtr log = log4cxx::Logger::getLogger(strName);
LOG4CXX_DECODE_CHAR(fileName, strName + ".log");
log4cxx::FileAppenderPtr appender(new log4cxx::FileAppender(new log4cxx::SimpleLayout, fileName, false));
log->addAppender(appender);
LOG4CXX_INFO(log, strName);
log->removeAppender(appender);
}
int main(int argc, char * argv[]) {
log4cxx::xml::DOMConfigurator::configure("trace.xml");
if(log4cxx::Logger::getLogger("Log")->getAllAppenders().empty()) {
std::cout << "failed to config log4cxx" << std::endl;
return 1;
}
log4cxx::LoggerPtr log = log4cxx::Logger::getLogger("Log");
boost::thread_group threadGroup;
for(int k = 0; k != 3; ++k) {
threadGroup.create_thread(boost::bind(func, k));
}
threadGroup.join_all();
return 0;
}
with simple trace.xml