log4cplus: динамическая загрузка скрипта конфигурации, как решить эту проблему? - PullRequest
0 голосов
/ 08 ноября 2018

когда я использую «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 голосов
/ 08 ноября 2018

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

...