#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);}while(0) #define SPLOG_INFO(...) do {SPDLOG_LOGGER_INFO(MySpdlog::getInstace()->myLogger1, VA_ARGS);\ SPDLOG_LOGGER_INFO(MySpdlog::getInstace()->myLogger2, VA_ARGS); }while(0) #define SPLOG_ERROR(...) do {SPDLOG_LOGGER_ERROR(MySpdlog::getInstace()->myLogger1, VA_ARGS);\ SPDLOG_LOGGER_ERROR(MySpdlog::getInstace()->myLogger2, VA_ARGS);}while(0) #define SPDLOG_CLRAR(a) do{std::fstream fout((a),std::ios::out|std::ios::trunc);fout.close();}while(0)按照这种写法,为什么只有程序关闭后才会往文件中写入log
时间: 2024-04-03 16:36:41 浏览: 192
【C/C++】#ifndef,#define用法
这是因为这段代码使用的是异步日志模式,日志并不是即时写入文件,而是先写入一个内存缓冲区,然后由后台线程异步地将缓冲区中的日志写入磁盘文件。这种方式可以提高程序的性能,避免频繁的IO操作。当程序关闭时,会强制刷新缓冲区并将剩余的日志写入文件,以确保所有日志都被写入到文件中。如果想要实时将日志写入文件,可以使用同步日志模式。
阅读全文