-
读取配置文件动态创建对象 [C++] (3)
2006-02-02
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://jnn.blogbus.com/logs/1879313.html
void
log4cplus::PropertyConfigurator::configureAppenders()
{
Properties appenderProperties =
properties.getPropertySubset(LOG4CPLUS_TEXT("appender."));
// 根据Appenders文本获取相关的数据
vector<tstring> appendersProps = appenderProperties.propertyNames();
for(vector<tstring>::iterator it=appendersProps.begin();
it!=appendersProps.end();
++it)
{
if( (*it).find( LOG4CPLUS_TEXT('.') ) == tstring::npos ) {
//实现基本的数据采集获取功能
tstring factoryName = appenderProperties.getProperty(*it);
//解析获得创建实例所需使用的有关Factory的方法
AppenderFactory* factory = getAppenderFactoryRegistry().get(factoryName);
// 通过工厂名称来获得相关的工厂方法
if(factory == 0) {
tstring err =
LOG4CPLUS_TEXT("PropertyConfigurator::configureAppenders()- Cannot find AppenderFactory: ");
getLogLog().error(err + factoryName);
continue;
}
Properties properties =
appenderProperties.getPropertySubset((*it) + LOG4CPLUS_TEXT("."));
try {
//创建相关的对象链接
SharedAppenderPtr appender = factory->createObject(properties);
if(appender.get() == 0) {
tstring err =
LOG4CPLUS_TEXT("PropertyConfigurator::configureAppenders()- Failed to create appender: ");
getLogLog().error(err + *it);
}
//实现对属性值的处理
else {
appender->setName(*it);
appenders[*it] = appender;
}
}
catch(std::exception& e) {
tstring err =
LOG4CPLUS_TEXT("PropertyConfigurator::configureAppenders()- Error while creating Appender: ");
getLogLog().error(err + LOG4CPLUS_C_STR_TO_TSTRING(e.what()));
}
}
} // end for loop
}
void
log4cplus::PropertyConfigurator::configureAdditivity()
{
Properties additivityProperties =
properties.getPropertySubset(LOG4CPLUS_TEXT("additivity."));
vector<tstring> additivitysProps = additivityProperties.propertyNames();
for(vector<tstring>::iterator it=additivitysProps.begin();
it!=additivitysProps.end();
++it)
{
Logger logger = getLogger(*it);
tstring actualValue = additivityProperties.getProperty(*it);
tstring value = toLower(actualValue);
if(value == LOG4CPLUS_TEXT("true")) {
logger.setAdditivity(true);
}
else if(value == LOG4CPLUS_TEXT("false")) {
logger.setAdditivity(false);
}
else {
getLogLog().warn( LOG4CPLUS_TEXT("Invalid Additivity value: \"")
+ actualValue
+ LOG4CPLUS_TEXT("\""));
}
}
}
历史上的今天:
读取配置文件动态创建对象[C++](5) 2006-02-02读取配置文件动态创建对象[C++](4) 2006-02-02读取配置文件动态创建对象 [C++] (2) 2006-02-02读取配置文件动态创建对象[C++] (1) 2006-02-02随机文章:
读取配置文件动态创建对象[C++](5) 2006-02-02读取配置文件动态创建对象[C++](4) 2006-02-02读取配置文件动态创建对象 [C++] (2) 2006-02-02读取配置文件动态创建对象[C++] (1) 2006-02-02sessions模式 2004-05-07
收藏到:Del.icio.us







