#define SPLOG_INIT() MySpdlog::getInstace()->init() #define SPLOG_UNINIT() MySpdlog::getInstace()->uninit() #define SPLOG_DEBUG(...) do {SPDLOG_LOGGER_DEBUG(MySpdlog::getInstace()->myLogger1, __VA_ARGS__);\ SPDLOG_LOGGER_DEBUG(MySpdlog::getInstace()->myLogger2, __VA_ARGS__);\ spdlog::flush_every(std::chrono::seconds(1));}while(0) #define SPLOG_INFO(...) do {SPDLOG_LOGGER_INFO(MySpdlog::getInstace()->myLogger1, __VA_ARGS__);\ SPDLOG_LOGGER_INFO(MySpdlog::getInstace()->myLogger2, __VA_ARGS__);\ spdlog::flush_every(std::chrono::seconds(1));}while(0) #define SPLOG_ERROR(...) do {SPDLOG_LOGGER_ERROR(MySpdlog::getInstace()->myLogger1, __VA_ARGS__);\ SPDLOG_LOGGER_ERROR(MySpdlog::getInstace()->myLogger2, __VA_ARGS__);\ spdlog::flush_every(std::chrono::seconds(1));}while(0) #define SPDLOG_CLRAR(a) do{std::fstream fout((a),std::ios::out|std::ios::trunc);fout.close();}while(0);为什么按照这种方式写他只有程序停止后才会写入log
时间: 2024-03-21 17:40:41 浏览: 40
C++ 中pragma once 与 #ifndef _XXX_H_ #define _XXX_H_的区别
5星 · 资源好评率100%
这是因为在使用 SPDLOG 进行日志输出时,默认情况下会使用异步日志模式。即程序将日志消息发送到一个内部的队列中,而不是直接写入到文件中,这样可以避免频繁的磁盘操作对程序性能的影响。队列中的日志消息会在后台线程中异步写入到文件中。
如果你希望在日志输出后立即将日志消息写入到文件中,可以通过设置 SPDLOG 的全局选项来关闭异步日志模式。可以在程序初始化的时候加入如下代码:
```cpp
spdlog::set_sync_mode(); // 关闭异步日志模式
```
这样就可以在日志输出后立即将日志消息写入到文件中了。不过需要注意的是,关闭异步日志模式可能会影响程序的性能。
阅读全文