Если я настрою и запланирую Poco::Timer
Poco::Timer timer{ 0, 10000 /* ms */ };
MyTask task;
timer.start(Poco::TimerCallback<MyTask>(task, &MyTask::onTimer));
, где MyTask
-
class MyTask
{
public:
Task() : logger { Poco::Logger::get("TaskLogger") } {}
void onTimer(Poco::Timer &timer)
{
this->logger.information("Logged");
}
private:
Poco::Logger &logger;
}
мой HTTPServer, построенный поверх библиотек poco вылетает с сообщением
Aborted
Если я удаляю строку this->logger.information(...);
из MyTask::onTimer
, сервер работает нормально.Фактически, я должен заменить эту строку на
std::cout << "Logged" << '\n';
Я вижу, что сообщение регистрируется каждые 10 секунд.
Очевидно, мне не разрешено использовать Poco::Logger
от другихпотоки.
MCVE без HTTPServer:
#include <iostream>
#include "Poco/Logger.h"
#include "Poco/Timer.h"
class MyTask
{
public:
Task() : logger { Poco::Logger::get("TaskLogger") } {}
void onTimer(Poco::Timer &timer)
{
this->logger.information("Logged");
}
private:
Poco::Logger &logger;
}
int main()
{
Poco::Timer timer {0, 5000};
MyTask task;
poco.start(Poco::TimerCallback<MyTask>(task, &MyTask::onTimer));
std::cin.get();
return 0;
}
Logger
никогда не будет регистрироваться.
Q: Как я могу регистрировать сообщения (используя Poco/Logger
) внутри других тем?
Информация о системе
POCO version
poco-1.9.0
Compiler and version
gcc (Debian 6.3.0-18+deb9u1) 6.3.0 20170516
g++ (Debian 6.3.0-18+deb9u1) 6.3.0 20170516
Operating system and version
Debian GNU/Linux 9.6 (stretch)