全局函数
在全局函数中完成
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
方法来获取具体的能够使用的对象的实例
分享到:
相关推荐
在C++编程中,读取配置文件是一项常见的任务,它允许程序在运行时根据外部文件中的设置进行调整,而不是硬编码这些参数。本教程将详细讲解如何使用C++读取配置文件,特别是针对TXT格式的文件,因为它们简单且易于...
标题“从配置文件动态创建菜单”揭示了我们讨论的主题,即通过读取配置文件(可能是JSON、XML或YAML格式)来构建应用的菜单结构。这样的设计模式有诸多优点,比如灵活性、可扩展性和易于维护性。 描述“从配置文件...
本文将详细介绍如何在C++项目中整合`spdlog`,创建一个`message`类来包装日志功能,并读取外部配置文件以实现灵活的日志管理。 首先,`spdlog`库提供了多种日志级别(如`trace`, `debug`, `info`, `warn`, `error`,...
本模块提供了一种在Ubuntu环境下使用C++读取INI配置文件的方法,使得开发者能方便地获取和修改配置信息。以下是关于这个功能模块的关键知识点和实现细节: 1. **INI文件格式**:INI文件是一种简单的文本格式,通常...
1. **读取配置文件**:`GetPrivateProfileString`用于读取配置文件中的键值。函数原型如下: ```cpp DWORD GetPrivateProfileString( LPCTSTR lpAppName, LPCTSTR lpKeyName, LPCTSTR lpDefault, LPTSTR ...
在IT开发过程中,读取配置文件是一个常见的任务,它允许我们动态地管理应用程序的设置,如数据库连接字符串、API密钥或系统参数。本篇文章将深入探讨如何以简单的方式读取本地配置文件,并结合CListBox控件实现中...
1. **读取配置文件**: - XML文件:利用CoCreateInstance创建MSXML的DOM对象,然后调用load方法加载文件,通过IXMLDOMNode接口获取和解析元素及属性。 - INI文件:使用GetPrivateProfileString读取特定键值对,...
4. **读取Lua配置**:在C++中,我们可以创建一个`lua_State`对象,这是Lua解释器的实例。通过`luaL_dostring`或`luaL_dofile`函数,我们可以加载并执行Lua脚本。例如,如果你有一个名为`config.lua`的配置文件,你...
TinyXML-2是一个小型、快速且易于使用的C++ XML解析器,它能将XML数据读取到DOM(文档对象模型)结构中,然后可以遍历这个结构并将其转换回XML字符串,或者将对象的状态写入XML文件。 在C++中,实现对象序列化通常...
本示例将详细介绍如何在C++中读取Lua配置文件并将其转换为JSON格式。 首先,我们需要在C++项目中集成Lua库。这通常涉及下载Lua源代码,编译为静态或动态库,并在C++项目中链接。确保你正确地配置了头文件路径和库...
在IT行业中,XML(eXtensible Markup Language)是一种用于存储和传输数据的标准化格式,广泛应用在配置文件、数据交换和文件存储等方面。C++作为一款强大的编程语言,虽然原生并不支持XML处理,但可以通过第三方库...
2. **读取配置文件**:在程序启动时,使用`ConfigurationManager.AppSettings`读取配置文件中的DLL路径。 ```csharp using System.Configuration; string dllPath = ConfigurationManager.AppSettings["DynamicDll...
2. 编写解析器:创建一个解析器读取配置文件,将文件中的数据转换为程序可以理解的对象或变量。这可能涉及到DOM、SAX等XML解析库,或直接处理INI文件的API。 3. 绑定控件属性:在程序初始化或用户选择皮肤时,遍历...
本项目名为"项目生成与读取配置文件测试",主要关注的是如何在代码中创建、读取和处理这些配置文件。这里我们将详细探讨配置文件的重要性、常见格式、读取方式以及在实际项目中的应用。 1. 配置文件的重要性: - ...
在C++编程中,处理配置文件是常见的任务,它允许程序根据不同的环境或用户需求动态地改变行为。本文将深入探讨如何使用C++通过map来读取和调用配置文件,以及提供一个简单的源码实现。 配置文件通常采用文本格式,...
配置文件通常用于存储应用的设置、参数或特定环境的信息,以便程序在运行时能够动态调整行为。本篇文章将探讨如何通过宏来简化配置文件的处理,提高代码的可读性和可维护性。 首先,我们关注"ConfigBase.h"这个...
XML(eXtensible Markup Language)是一种用于存储和传输数据的标记语言,它在软件开发中,特别是C++编程中,常被用来进行配置文件管理。C++程序使用XML文件作为配置可以提供一种灵活且可读性强的方式来存储和管理...
下面是一个简单的示例,展示如何使用`CIniFile`来读取配置文件: ```cpp #include #include #include CIniFile iniFile; iniFile.Init("config.ini", TRUE); // 初始化配置文件,TRUE表示创建文件如果不存在 /...
本示例将详细介绍如何在UE4中使用C++来读取JSON文件。 首先,要进行JSON读取,你需要在你的项目中包含相关的头文件。在C++源代码中,引入`CoreUObject`模块的`JSON`部分: ```cpp #include "Json.h" #include ...
总结来说,这个源码实例展示了如何在C++中实现动态参数初始化,通过动态读取ini配置文件,提高了软件的适应性和用户友好性。同时,利用`std::vector`作为动态数组,使得程序能轻松处理配置数据的变化,体现了C++语言...