log4cplus:动态加载配置脚本,如何解决这个问题?

时间:2018-11-08 06:13:20

标签: c++ log4cplus

当我在主函数中使用“ 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();
    ........
}

1 个答案:

答案 0 :(得分:0)

这是基本的变量生存期问题。 configureThread变量超出了b()的范围,并且杀死了正在监视配置更改的整个线程。同时,当您将其保存在main()中时,只要您不退出main()(在整个应用程序运行时间中),它就会保持活动状态。