spdlog每天创建新的存储文件
时间: 2023-08-08 21:13:39 浏览: 135
是的,spdlog提供了RotatingFileSink和DailyFileSink两个文件输出类,其中DailyFileSink可以每天创建新的存储文件。你可以在初始化spdlog logger时指定使用哪个文件输出类,并设置文件名和其他参数。例如,使用DailyFileSink并设置文件名为"log-%Y-%m-%d.txt"可以让spdlog每天创建一个以当前日期命名的日志文件。具体使用方法可以参考spdlog的文档。
相关问题
spdlog每天创建新的存储文件实例
以下是使用spdlog每天创建新的存储文件的一个示例:
```c++
#include "spdlog/spdlog.h"
#include "spdlog/sinks/daily_file_sink.h"
int main()
{
// 设置日志文件名格式,%Y-%m-%d表示年月日
std::string filename = "log-%Y-%m-%d.txt";
// 创建每天新的日志文件的文件输出类
auto daily_sink = std::make_shared<spdlog::sinks::daily_file_sink_mt>(filename, 0, 0);
// 创建logger并设置输出目标为daily_sink
auto logger = std::make_shared<spdlog::logger>("logger", daily_sink);
// 设置日志级别为debug
logger->set_level(spdlog::level::debug);
// 输出日志
logger->debug("This is a debug message.");
logger->info("This is an info message.");
logger->warn("This is a warning message.");
logger->error("This is an error message.");
return 0;
}
```
这个示例中,使用`sinks::daily_file_sink_mt`类创建了一个每天新的日志文件的文件输出类,并使用`logger`类将日志输出到这个文件。在创建日志文件输出类时,`log-%Y-%m-%d.txt`表示日志文件名格式为`log-年-月-日.txt`,`0`表示使用本地时间,`0`表示每天创建新的日志文件。你可以根据需要自定义日志文件名格式和其他参数。
c++代码如何运用spdlog每天创建用时间名称命名的新文件夹
使用spdlog创建每天创建以时间命名的新文件夹的日志记录器,可以通过设置文件名模式来实现。模式中可以使用时间格式化字符串,以在每天创建一个新的目录,并将日志记录到该目录中。
以下是一个示例代码,用于每天创建一个新的文件夹,并将日志写入该文件夹中:
```cpp
#include <iostream>
#include <chrono>
#include "spdlog/spdlog.h"
#include "spdlog/sinks/daily_file_sink.h"
int main()
{
// 获取当前时间
auto now = std::chrono::system_clock::now();
auto now_c = std::chrono::system_clock::to_time_t(now);
// 设置日志文件名模式,用时间命名每天创建新的文件夹
std::string log_file_name = "logs/" + std::to_string(std::localtime(&now_c)->tm_year + 1900)
+ "-" + std::to_string(std::localtime(&now_c)->tm_mon + 1)
+ "-" + std::to_string(std::localtime(&now_c)->tm_mday)
+ "/%Y-%m-%d_%H-%M-%S.log";
// 创建每天自动创建新文件夹和新日志文件的日志记录器
auto daily_sink = std::make_shared<spdlog::sinks::daily_file_sink_st>(log_file_name, 0, 0);
auto logger = std::make_shared<spdlog::logger>("daily_logger", daily_sink);
// 设置日志记录级别
logger->set_level(spdlog::level::debug);
// 记录日志
logger->info("Hello, spdlog!");
return 0;
}
```
在上面的示例中,我们使用 `std::chrono::system_clock` 获取当前时间,并使用 `std::localtime` 将其转换为本地时间。然后,我们使用当前年月日来创建日志文件名。最后,我们使用 `spdlog::sinks::daily_file_sink_st` 创建每天自动创建新文件夹和新日志文件的日志记录器,并将其命名为 `"daily_logger"`,记录日志。
通过上述代码,我们可以每天创建一个新的文件夹,并将日志记录到该文件夹中,方便日后查看和管理。
阅读全文