spdlog中set_level级别代表什么
时间: 2023-10-16 18:10:45 浏览: 40
在spdlog中,`set_level`函数用于设置日志记录的级别。级别越高,记录的日志就越少,级别越低,记录的日志就越详细。常见的日志级别如下:
- `trace`:最详细的日志级别,通常用于调试。
- `debug`:用于输出调试信息,例如变量的值等。
- `info`:用于输出程序运行的重要信息,例如程序启动、关闭等。
- `warn`:用于输出警告信息,例如某些操作不符合预期等。
- `error`:用于输出错误信息,例如程序崩溃、发生异常等。
- `critical`:用于输出严重错误信息,例如系统崩溃、无法恢复等。
当设置日志记录级别为`info`时,只有`info`、`warn`、`error`和`critical`级别的日志信息会被记录,而`trace`和`debug`级别的日志信息会被忽略。因此,设置日志级别可以帮助我们过滤掉不必要的日志信息,使得日志更加简洁明了。
相关问题
模仿下列代码写一个每天新建以时间命名文件的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目录下,需要事先创建该目录。
spdlog::rotating_logger_mt举例
下面是一个使用spdlog::rotating_logger_mt记录日志的示例代码:
```c++
#include <iostream>
#include "spdlog/spdlog.h"
#include "spdlog/sinks/basic_file_sink.h"
#include "spdlog/sinks/rotating_file_sink.h"
int main()
{
// 创建一个rotating_logger_mt对象
auto logger = spdlog::rotating_logger_mt("logger", "example.log", 1024 * 1024 * 5, 3);
// 设置日志级别为info
logger->set_level(spdlog::level::info);
// 写入日志信息
logger->info("This is an info message");
logger->warn("This is a warning message");
logger->error("This is an error message");
return 0;
}
```
上面的示例代码中,我们通过调用spdlog::rotating_logger_mt()函数创建了一个名为“logger”的rotating_logger_mt对象,指定了日志文件名为“example.log”,最大文件大小为5MB,最大文件数为3个。然后,我们设置了日志级别为info,并写入了三条不同级别的日志信息。当日志文件大小达到5MB时,会自动进行轮换,最多保留3个日志文件。