c++用spdlog写一个每天都新建用日期命名的log文件
时间: 2024-03-06 20:49:31 浏览: 35
您可以使用spdlog的RotatingLogger来实现每天都新建用日期命名的log文件的功能。下面是一个使用RotatingLogger的示例代码:
```cpp
#include <spdlog/spdlog.h>
#include <spdlog/sinks/rotating_file_sink.h>
int main() {
auto logger = spdlog::rotating_logger_mt("rotating_logger", "logs/rotating_log.txt", 1024 * 1024 * 5, 3); // 新建每日log文件
logger->info("Hello, World!"); // 输出log信息
return 0;
}
```
上面的代码中,rotating_logger_mt函数会创建一个RotatingLogger,第一个参数是logger的名字,第二个参数是log文件的路径,第三个参数是log文件的最大大小,第四个参数是log文件的最大数量。最后可以使用logger的info、error、warn等方法来输出log信息。每天的信息都会写入到新建的日志文件中。
需要注意的是,使用RotatingLogger时,每个log文件名会根据当前日期和时间自动生成,格式为"filename.YYYY-MM-DD_hh-mm-ss"。如果您只需要日期作为文件名,可以使用daily_file_sink。
相关问题
c++用spdlog写一个每天都新建log文件
您可以使用spdlog的RotatingLogger或DailyLogger来实现每天都新建log文件的功能。下面是一个使用DailyLogger的示例代码:
```cpp
#include <spdlog/spdlog.h>
#include <spdlog/sinks/daily_file_sink.h>
int main() {
auto logger = spdlog::daily_logger_mt("daily_logger", "logs/daily_log.txt", 0, 0); // 新建每日log文件
logger->info("Hello, World!"); // 输出log信息
return 0;
}
```
上面的代码中,daily_logger_mt函数会创建一个DailyLogger,第一个参数是logger的名字,第二个参数是log文件的路径,第三个参数是UTC时间的小时偏移量,第四个参数是UTC时间的分钟偏移量。最后可以使用logger的info、error、warn等方法来输出log信息。每天的信息都会写入到新建的日志文件中。
需要注意的是,使用DailyLogger时,每天的log文件名会根据当前日期自动生成,格式为"filename.YYYY-MM-DD"。如果您需要自定义log文件名的格式,可以使用RotatingLogger来实现。
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"`,记录日志。
通过上述代码,我们可以每天创建一个新的文件夹,并将日志记录到该文件夹中,方便日后查看和管理。