默认情况下,spdlog会让底层的libc在适当的时候进行刷新,以实现良好的性能。你可以使用以下选项来覆盖这个行为:
手动刷新
你可以使用 `logger->flush()` 函数来指示日志记录器刷新其内容。日志记录器将依次在底层的每个输出目标上调用 `flush()` 函数。
注意:如果使用异步日志记录器,`logger->flush()` 会在队列中发布一个请求刷新操作的消息,因此该函数会立即返回。这与某些旧版本的spdlog不同(旧版本会同步等待直到消息被接收并刷新完成)。目前在关闭时不需要显式调用 `logger->flush()` 或 `spdlog::shutdown()`,在程序退出时会自动完成。然而,如果你希望在 "立即" 退出函数(如 `abort()` 或 `_exit(-1)`)之前手动刷新所有异步日志记录器,请在这些函数之前调用 `spdlog::shutdown()`。
基于严重程度的刷新
你可以设置会触发自动刷新的最低日志级别。
例如,以下设置会在记录错误或更严重的消息时触发刷新:
my_logger->flush_on(spdlog::level::err);
基于时间间隔的