I am using spdlog and gtest in my library. I need to save some logs (not gtest logs) from test execution to files. Here is code for creating loggers:
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);
}
It works fine in example program with my library. When I run tests debug_logger
saves everything in files but logger
saves nothing. When I remove
debug_logger->set_level(spdlog::level::debug);
debug_logger
is not working too. So I thought that it's problem with loggers but when I add
logger->set_level(spdlog::level::info);
it is still not working.
Here is main for tests:
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;
}
}
Setup and one of test cases:
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
saves info
logs too but logger
with debug
not.
Do you have any clue what is wrong with tests and loggers initialization in my code? Should I use two loggers in my library or one with two files?