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 ( "\"" ));

        }

    }

}

Posted on 2006-09-11 15:14 艾凡赫 阅读(472) 评论(0)  编辑 收藏 引用 所属分类: C++

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理