我在我的库中使用 spdlog 和 gtest。我需要将一些日志(不是 gtest 日志)从测试执行保存到文件中。这是创建记录器的代码:
void createLogger() {
auto debug_logger = spdlog::rotating_logger_mt("debug_logger", "logs/test_debug", 1024 * 1024 * 25, 3);
debug_logger->set_level(spdlog::level::debug);
auto logger = spdlog::rotating_logger_mt("logger", "logs/test_info", 1024 * 1024 * 5, 2);
}
它在我的库的示例程序中运行良好。当我运行测试时,debug_logger
将所有内容保存在文件中,但logger
什么也不保存。当我删除
debug_logger->set_level(spdlog::level::debug);
debug_logger
也不工作。所以我认为这是记录器的问题但是当我添加
logger->set_level(spdlog::level::info);
它仍然无法正常工作。
这是测试的主要内容:
int main(int argc, char **argv) {
try {
utility::createLogger();
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
} catch (const spdlog::spdlog_ex& ex) {
std::cout << "Log initialization failed: " << ex.what() << std::endl;
}
}
设置和测试用例之一:
class CPUTest: public ::testing::Test {
protected:
std::shared_ptr<spdlog::logger> logger;
void SetUp() {
spdlog::get("logger")->info("test get");
logger = spdlog::get("logger");
}
};
TEST_F(CPUTest, Resolve15) {
logger->info("Something from info logger");
// ...
}
debug_logger
with level也debug
保存info
日志,但不保存。logger
debug
您是否知道我的代码中的测试和记录器初始化有什么问题?我应该在我的库中使用两个记录器还是一个带有两个文件?