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 ответ

Это основная проблема времени жизни переменной. configureThread переменная выходит из области видимости в b() и это убивает весь поток, который наблюдает за изменениями конфигурации. Хотя, когда у вас есть в main(), он остается в живых до тех пор, пока вы не выйдете main() что для всего времени выполнения вашего приложения.

Другие вопросы по тегам