logger = make_logger
时间: 2024-06-19 18:02:32 浏览: 14
make_logger是一个C++的函数模板,它的作用是创建一个logger对象,用于输出日志信息。一般来说,logger会将日志信息输出到文件或者控制台上,方便程序员对程序的运行情况进行调试和分析。
make_logger函数的语法如下:
```
template <typename T>
auto make_logger(T t) {
return [t](auto&&... args) {
std::cout << "[" << t << "]: ";
(std::cout << ... << args) << '\n';
};
}
```
其中,参数t是用来标识logger的名称,args则是可变参数模板,用来接收要输出的日志信息。make_logger函数会返回一个lambda表达式,这个lambda表达式可以用来输出日志信息。
下面是一个示例:
```
auto logger = make_logger("Test");
logger("Hello, World!");
```
这个示例会创建一个名为Test的logger对象,并使用它输出一条日志信息"Hello, World!"。输出的结果类似于:
```
[Test]: Hello, World!
```
相关问题
============================ test session starts ============================= platform win32 -- Python 3.6.5, pytest-3.5.1, py-1.5.3, pluggy-0.6.0 rootdir: C:\Users\CVAchip\Mcu\Peripherals\ADC, inifile: plugins: remotedata-0.2.1, openfiles-0.3.0, doctestplus-0.1.3, arraydiff-0.2 collected 0 items / 1 errors =================================== ERRORS ==================================== ___________________________ ERROR collecting adc.py ___________________________ ImportError while importing test module 'C:\Users\CVAchip\Mcu\Peripherals\ADC\adc.py'. Hint: make sure your test modules/packages have valid Python names. Traceback: adc.py:13: in <module> from Logs.logs import logger E ModuleNotFoundError: No module named 'Logs' !!!!!!!!!!!!!!!!!!! Interrupted: 1 errors during collection !!!!!!!!!!!!!!!!!!! =========================== 1 error in 2.92 seconds ===========================
这些错误是由pytest测试框架在收集测试模块时检测到的问题。下面是对每个错误的解释:
1. `ImportError while importing test module 'C:\Users\CVAchip\Mcu\Peripherals\ADC\adc.py'`:这个错误表示在导入测试模块时发生了导入错误。
2. `ModuleNotFoundError: No module named 'Logs'`:这个错误表示在`adc.py`模块中找不到名为`Logs`的模块。
根据错误信息,似乎你的测试模块依赖于一个名为`Logs`的模块,但无法找到该模块。请确保在运行测试之前已经安装了所有需要的依赖项,并且这些依赖项能够正确导入。
如果你已经安装了`Logs`模块,但仍然出现此错误,请确保模块的名称和路径都是正确的。还要确保你的Python环境和项目的工作目录设置正确。
另外,确保你的测试文件和目录结构符合pytest的命名规范。测试文件应该以`test_`开头,并且应该位于与被测试文件相同的目录中或者位于一个名为`tests`的子目录中。
修复这些问题需要根据具体情况进行调查和修改。确保你的环境和依赖项设置正确,并遵循pytest的命名和结构规范。
rotating_logger_mt
`rotating_logger_mt` 是 spdlog 提供的一种基于文件大小循环滚动的日志记录器。它会在达到指定的文件大小时自动创建一个新的日志文件,并将当前日志写入新文件,而旧文件则被重命名并保留在磁盘上。
以下是一个使用`rotating_logger_mt`的示例:
```cpp
auto rotating_sink = std::make_shared<spdlog::sinks::rotating_file_sink_mt>("example.log", 1024 * 1024 * 5, 3);
auto logger = std::make_shared<spdlog::logger>("example", rotating_sink);
// 设置日志记录级别
logger->set_level(spdlog::level::debug);
// 记录日志
logger->info("Hello, spdlog!");
```
在上面的示例中,我们创建了一个每个文件大小为5MB的循环滚动日志记录器,最多保留3个日志文件。当第一个日志文件达到5MB时,它将被重命名为 `example.log.1`,新的日志将被写入 `example.log`。当第二个日志文件也达到5MB时,它将被重命名为 `example.log.2`,第一个日志文件将被重命名为 `example.log.1`,新的日志将被写入 `example.log`。以此类推,最多保留3个日志文件。
使用 `rotating_logger_mt` 可以方便地在不占用过多磁盘空间的前提下,记录大量的日志数据。