请使用spdlog开发一个,可以控制在控制台或文件打印日志信息,包含日志轮换,打印信息颜色区分,打印的内容准确到某个方法的某一行。
时间: 2024-02-20 10:58:57 浏览: 169
好的,以下是使用spdlog开发的日志记录器的示例代码:
```c++
#include <iostream>
#include <spdlog/spdlog.h>
#include <spdlog/sinks/basic_file_sink.h>
#include <spdlog/sinks/stdout_color_sinks.h>
int main()
{
// 创建控制台和文件输出的日志记录器
auto console_sink = std::make_shared<spdlog::sinks::stdout_color_sink_mt>();
auto file_sink = std::make_shared<spdlog::sinks::basic_file_sink_mt>("example.log", true);
// 设置日志颜色
console_sink->set_color(spdlog::level::trace, spdlog::color_type::white);
console_sink->set_color(spdlog::level::debug, spdlog::color_type::blue);
console_sink->set_color(spdlog::level::info, spdlog::color_type::green);
console_sink->set_color(spdlog::level::warn, spdlog::color_type::yellow);
console_sink->set_color(spdlog::level::err, spdlog::color_type::red);
console_sink->set_color(spdlog::level::critical, spdlog::color_type::bold_red);
// 创建多个日志记录器,每个记录器都可以设置不同的日志过滤级别和输出目标
auto logger1 = std::make_shared<spdlog::logger>("example", spdlog::sinks_init_list{console_sink, file_sink});
logger1->set_level(spdlog::level::trace);
logger1->set_pattern("[%Y-%m-%d %H:%M:%S.%e] [%^%l%$] [thread %t] %v");
auto logger2 = std::make_shared<spdlog::logger>("example2", spdlog::sinks_init_list{console_sink});
logger2->set_level(spdlog::level::info);
logger2->set_pattern("[%Y-%m-%d %H:%M:%S.%e] [%^%l%$] %v");
// 记录日志
logger1->trace("trace message from logger1");
logger1->debug("debug message from logger1");
logger1->info("info message from logger1");
logger1->warn("warn message from logger1");
logger1->error("error message from logger1");
logger1->critical("critical message from logger1");
logger2->info("info message from logger2");
// 关闭日志记录器前,需要刷新所有的日志输出
spdlog::shutdown();
return 0;
}
```
这个示例代码演示了如何创建一个控制台和文件输出的日志记录器,设置不同的日志过滤级别、日志颜色和输出格式,并记录不同级别的日志信息。如果您想要更精确的日志记录,可以使用`__FILE__`和`__LINE__`宏来记录调用日志的代码位置。
阅读全文