void
log4cplus :: PropertyConfigurator :: configureAppenders ()
{
??? Properties ? appenderProperties =
???????? properties . getPropertySubset ( LOG4CPLUS_TEXT ( "appender." ));
??? //
根據(jù)
Appenders
文本獲取相關(guān)的數(shù)據(jù)
??? vector < tstring > appendersProps = appenderProperties . propertyNames ();
??? for ( vector < tstring >:: iterator ? it = appendersProps . begin ();
??????? it != appendersProps . end ();
??????? ++ it )
??? {
??????? if ( (* it ). find ( LOG4CPLUS_TEXT ( '.' ) ) == tstring :: npos ) {
????
????????
????//
實(shí)現(xiàn)基本的數(shù)據(jù)采集獲取功能
tstring ? factoryName = appenderProperties . getProperty (* it );
//
解析獲得創(chuàng)建實(shí)例所需使用的有關(guān)
Factory
的方法
AppenderFactory * factory = getAppenderFactoryRegistry (). get ( factoryName );
//
通過(guò)工廠名稱來(lái)獲得相關(guān)的工廠方法
??????????? 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 {
?
?????????? //
創(chuàng)建相關(guān)的對(duì)象鏈接
??????????????? SharedAppenderPtr ? appender = factory -> createObject ( properties );
??????????????? if ( appender . get () == 0) {
??????????????????? tstring ? err =
??????????????????????? LOG4CPLUS_TEXT ( "PropertyConfigurator::configureAppenders()- Failed to create appender: " );
??????????????????? getLogLog (). error ( err + * it );
? ??????????????}
//
實(shí)現(xiàn)對(duì)屬性值的處理
??????????????? 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 ( "\"" ));
??????? }
??? }
}