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()
что для всего времени выполнения вашего приложения.