我正在使用 QFileSystemWatcher 来控制日志文件的更改。为了创建和更新日志文件,我使用了 boost 库。
当我在一个方法中记录几条消息时,文件更改信号只发出一个(对于最后一条消息),但我看到每次添加日志消息后文件都会更新。
所以,QFileSystemWatcher 的代码是
std::string fn = "app.log";
logging::init_log(fn);
QFileSystemWatcher* watcher = new QFileSystemWatcher();
auto success = QObject::connect(watcher, SIGNAL(fileChanged(QString)), this, SLOT(handleFileChanged(QString)));
Q_ASSERT(success);
watcher->addPath(QString::fromStdString(fn));
添加日志消息
void a(){
/* some code */
logging::write_log("test error", logging::kError);
logging::write_log("test info", logging::kInfo);
}
QFileSystemWatcher 只为 Info 级别的消息发出信号。在文件管理器中,我看到每次调用后文件都会更新(测试错误、测试信息)。在日志文件初始化中,我使用
sink->locked_backend()->auto_flush(true);
所以文件会立即更新。
我怎样才能解决这个问题?或者也许还有另一种方法来处理日志文件更新以在 GUI 中显示消息。