在全局函數中完成
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
方法來獲取具體的能夠使用的對象的實例