使用__FILE__和__LINE__宏来记录调用日志的代码位置
时间: 2023-07-02 15:21:38 浏览: 67
好的,以下是使用`__FILE__`和`__LINE__`宏来记录调用日志的代码位置的示例代码:
```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", __FILE__, __LINE__);
logger1->debug("{}:{} debug message from logger1", __FILE__, __LINE__);
logger1->info("{}:{} info message from logger1", __FILE__, __LINE__);
logger1->warn("{}:{} warn message from logger1", __FILE__, __LINE__);
logger1->error("{}:{} error message from logger1", __FILE__, __LINE__);
logger1->critical("{}:{} critical message from logger1", __FILE__, __LINE__);
logger2->info("{}:{} info message from logger2", __FILE__, __LINE__);
// 关闭日志记录器前,需要刷新所有的日志输出
spdlog::shutdown();
return 0;
}
```
这个示例代码在记录日志时使用了`__FILE__`和`__LINE__`宏来获取代码位置信息,并将位置信息作为格式化字符串的一部分。这样,当日志被记录时,日志中就会包含调用日志的代码位置信息。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)