Log to different file with log4cxx

后端 未结 4 1123
南笙
南笙 2021-01-18 19:22

I want to log to different files in my code.

How can i do that in Log4cxx with xml configuration or programatically in code...

  • Suppose that I have 1.k,
4条回答
  •  独厮守ぢ
    2021-01-18 19:41

    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

    
    
         
             
             
        
    
        
            
         
    
        
            
            
        
    
    

提交回复
热议问题