在全局函數中完成 LoggerAppender 的初始化工作
initializeFactoryRegistry ();
?
void ? initializeFactoryRegistry () {
??????? AppenderFactoryRegistry & reg = getAppenderFactoryRegistry ();
??????? auto_ptr < AppenderFactory > ptr1 ( new ? ConsoleAppenderFactory ());
??????? reg . put ( ptr1 );
??????? auto_ptr < AppenderFactory > ptr2 ( new ? NullAppenderFactory ());
??????? reg . put ( ptr2 );
??????? auto_ptr < AppenderFactory > ptr3 ( new ? FileAppenderFactory ());
??????? reg . put ( ptr3 );
??????? auto_ptr < AppenderFactory > ptr4 ( new ? RollingFileAppenderFactory ());
??????? reg . put ( ptr4 );
??????? auto_ptr < AppenderFactory > ptr5 ( new ? DailyRollingFileAppenderFactory ());
??????? reg . put ( ptr5 );
??????? auto_ptr < AppenderFactory > ptr6 ( new ? SocketAppenderFactory ());
??????? reg . put ( ptr6 );
#if defined( _WIN32 )
??????? auto_ptr < AppenderFactory > ptr7 ( new ? NTEventLogAppenderFactory ());
??????? reg . put ( ptr7 );
#elif defined( HAVE_SYSLOG_H )
??????? auto_ptr < AppenderFactory > ptr8 ( new ? SysLogAppenderFactory ());
??????? reg . put ( ptr8 );
#endif
??????? LayoutFactoryRegistry & reg2 = getLayoutFactoryRegistry ();
??????? auto_ptr < LayoutFactory > ptr21 ( new ? SimpleLayoutFactory ());
??????? reg2 . put ( ptr21 );
??????? auto_ptr < LayoutFactory > ptr22 ( new ? TTCCLayoutFactory ());
??????? reg2 . put ( ptr22 );
??????? auto_ptr < LayoutFactory > ptr23 ( new ? PatternLayoutFactory ());
??????? reg2 . put ( ptr23 );
?
??????? FilterFactoryRegistry & reg3 = getFilterFactoryRegistry ();
??????? auto_ptr < FilterFactory > ptr31 ( new ? DenyAllFilterFactory ());
??????? reg3 . put ( ptr31 );
??????? auto_ptr < FilterFactory > ptr32 ( new ? LogLevelMatchFilterFactory ());
??????? reg3 . put ( ptr32 );
??????? auto_ptr < FilterFactory > ptr33 ( new ? LogLevelRangeFilterFactory ());
??????? reg3 . put ( ptr33 );
??????? auto_ptr < FilterFactory > ptr34 ( new ? StringMatchFilterFactory ());
??????? reg3 . put ( ptr34 );
}
?
通過這種方式來實現 ?
????????????? AppenderFactoryRegistry
?????????????????? LayoutFactoryRegistry
?????????????????? FilterFactoryRegistry
??????????????????
的初始化工作
–
如果要加入新的類型的數據的支持
,
需要將這部分的內容也要實現
???????
???? ???? 如何利用 Registry 中的內容來實現對象數據的創建 ?
注意
得到的指針內容都是 Factory 中定義的內容 ,
通過調用
Factory
方法來獲取具體的能夠使用的對象的實例