spdlog 输出时间格式
时间: 2023-08-24 09:08:01 浏览: 364
spdlog 默认的时间格式为 `%Y-%m-%d %H:%M:%S.%e`,即年月日 时分秒.毫秒。可以通过修改 `spdlog::set_pattern` 函数的参数来自定义时间格式。
例如,如果要输出时间戳(单位为秒),可以将时间格式修改为 `%s.%e`,即秒数.毫秒:
```cpp
spdlog::set_pattern("[%Y-%m-%d %H:%M:%s.%e] [%^%L%$] %v");
spdlog::info("This log message has a timestamp in seconds: {}.", std::time(nullptr));
```
输出将类似于:
```
[2022-02-22 16:18:1645567141.123456] [info] This log message has a timestamp in seconds: 1645567141.
```
相关问题
spdlog 输出格式
spdlog是一个快速的C++日志库,支持多线程,异步日志记录,支持多种日志格式和输出目标。spdlog支持的输出格式包括:
1. %v:日志消息
2. %n:换行符
3. %d:日期时间
4. %^:改变文本颜色
5. %s:源文件名
6. %t:线程ID
7. %P:进程ID
8. %L:日志级别
9. %!:错误码
10. %T:时间戳
11. %^[%L]%$:根据日志级别改变文本颜色
12. %^[%Y-%m-%d %H:%M:%S.%e][%L]%$:带有日期时间和日志级别的日志消息
除了以上格式,spdlog还支持自定义格式。
模仿下列代码写一个每天新建以时间命名文件的log std::string formatStr="%Y-%m-%dT%H:%M:%S.%e[%l][%s:%#][%!]%v"; myLogger1 = spdlog::rotating_logger_mt("spdlog", "logs/myspdlog.log", 1024 * 1024 * 10, 10); spdlog::set_default_logger(myLogger1); myLogger1->set_level(spdlog::level::debug); myLogger1->set_pattern(formatStr); myLogger2 = spdlog::stdout_color_mt("baseLogger2"); spdlog::set_default_logger(myLogger2); myLogger2->set_level(spdlog::level::debug); myLogger2->set_pattern(formatStr); return 0;
以下是一个每天新建以时间命名文件的日志记录器的示例代码:
```cpp
#include <ctime>
#include "spdlog/spdlog.h"
#include "spdlog/sinks/daily_file_sink.h"
int main()
{
// 获取当前时间
std::time_t now = std::time(nullptr);
std::tm tm = *std::localtime(&now);
// 按照时间格式生成日志文件名
char filename[100];
std::strftime(filename, sizeof(filename), "logs/%Y-%m-%d.log", &tm);
// 创建每天新建的文件日志记录器
auto logger = spdlog::daily_logger_mt("daily_logger", filename, 0, 0);
// 设置日志记录器的日志级别和格式化方式
logger->set_level(spdlog::level::debug);
logger->set_pattern("[%Y-%m-%d %H:%M:%S.%e] [%^%l%$] [%t] %v");
// 将创建的日志记录器设置为默认日志记录器
spdlog::set_default_logger(logger);
// 输出日志信息
spdlog::debug("Debug message");
spdlog::info("Informational message");
spdlog::warn("Warning message");
spdlog::error("Error message");
return 0;
}
```
这个示例代码中,我们首先获取当前时间,并按照时间格式生成日志文件名。然后,我们使用spdlog库提供的daily_logger_mt函数创建了一个每天新建的文件日志记录器,并将其命名为"daily_logger",文件名为生成的日志文件名。
接着,我们设置了日志记录器的日志级别为debug,并设置了日志输出的格式。最后,我们将创建的日志记录器设置为默认日志记录器,并使用spdlog库提供的debug、info、warn、error等函数输出日志信息。
需要注意的是,创建每天新建的文件日志记录器需要使用spdlog库的daily_file_sink模块,因此需要在代码中包含对应的头文件。另外,示例代码中生成的日志文件保存在logs目录下,需要事先创建该目录。
阅读全文