当我在主函数中使用“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();
........
}
最佳答案
这是基本的变量生命周期问题。 configureThread
变量超出了 b()
的范围,这会杀死正在监视配置更改的整个线程。而当您在 main()
中拥有它时,只要您不退出 main()
它就会保持事件状态,这适用于整个应用程序运行时。
关于c++ - log4cplus: 动态加载配置脚本,如何解决这个问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53202359/