在全局函数中完成 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 方法来获取具体的能够使用的对象的实例

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

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