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

标签 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();
    ........
}

最佳答案

这是基本的变量生命周期问题。 configureThread 变量超出了 b() 的范围,这会杀死正在监视配置更改的整个线程。而当您在 main() 中拥有它时,只要您不退出 main() 它就会保持事件状态,这适用于整个应用程序运行时。

关于c++ - log4cplus: 动态加载配置脚本,如何解决这个问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53202359/

相关文章:

linux - log4cplus RollingFileAppender 不创建新文件

log4cplus - 如何防止日志消息中出现 log4cplus 日志消息?

C++ 数据类型及其对可执行文件大小的影响

c++ - 模板与 Action 层次结构

c++ - 如何让两个函数相互调用 C++

php - 调试 SWIG PHP 扩展 : undefined symbol: _ZN15SplashOutputDev9updateAllEP8GfxState

c++ - 访问冲突读取位置-未终止的字符串(不可读的内存)

sockets - Log4cplus:SocketAppender日志记录服务器

c++ - 如何使用 log4cplus 在日志文件中打印方法名称

c++ - 修剪空格 C++ POINTERS