2012-06-29 102 views

回答

1

你的意思是log4cpp从http://sourceforge.net/projects/log4cpp/

简短的回答是肯定的。

下面是一些示例代码,你可以根据它的文档找出更多的细节:

我的代码用于在运行时配置基于文件的log4cpp实例。

“优先” 是 'DEBUG',...
“名” 这里是 '根'
“布局” 可能是“%d {%Y-%间%d%H:%M: %S}%c%x:%m%n“

// Create RollingFileAppender 
log4cpp::Appender *rfileAppender = new log4cpp::RollingFileAppender(std::string(name), 
     std::string(fileName), 
     maxFileSize, 
     maxBackupIndex, 
     append, 
     mode); 

if (rfileAppender != NULL) 
{ 
    // Create PatternLayout 
    log4cpp::Layout *layout = new log4cpp::PatternLayout(); 

    if (layout != NULL) 
    { 
     try 
     { 
      // Set up Pattern 
      ((log4cpp::PatternLayout *)layout)->setConversionPattern(std::string(layoutPattern)); 

      // Bind Layout to RollingFileAppender 
      rfileAppender->setLayout(layout); 

      category.setAdditivity(additivity); 

      try 
      { 
       category.setPriority(log4cpp::Priority::getPriorityValue(std::string(priority))); 
      } 
      catch(std::invalid_argument &ia) 
      { 
       std::cerr << "Invalid Priority: " << priority << std::endl; 
       category.setPriority(log4cpp::Priority::INFO); 
      } 

      // Bind RollingFileAppender to Category 
      category.addAppender(rfileAppender); 

      return 0; 
     } 
     catch(log4cpp::ConfigureFailure &cf) 
     { 
      std::cerr << cf.what() << std::endl; 
      return 1; 
     } 
    } 
    else 
    { 
     std::cerr << "Cannot initialize PatternLayout" << std::endl; 
     return 1; 
    } 
}