当我在主函数中使用“ ConfigureAndWatchThread”时,它就起作用了
int main()
{
......
Logger root = Logger::getRoot();
log4cplus::ConfigureAndWatchThread configureThread("log4cplus.properties", 1 * 1000);
......
}
buf,如果我在其他函数中使用“ ConfigureAndWatchThread”,则动态加载配置不起作用!代码如下:
void b()
{
ConfigureAndWatchThread configureThread("log4cplus.properties", 5 * 1000);
}
void a()
{
b();
}
int main()
{
......
Logger root = Logger::getRoot();
a();
........
}
答案 0 :(得分:0)
这是基本的变量生存期问题。 configureThread
变量超出了b()
的范围,并且杀死了正在监视配置更改的整个线程。同时,当您将其保存在main()
中时,只要您不退出main()
(在整个应用程序运行时间中),它就会保持活动状态。