我在应用程序中创建c++库模块。要进行日志记录,我使用spdlog。但是在生产环境中,我不希望我的lib模块进行任何日志记录。一种实现打开/关闭的方法是用#ifdef条件语句填充我的代码,例如...

#ifdef logging
  // call the logger here.
#endif

我正在寻找一种避免编写这些条件的方法。可能是包装器函数,它执行#ifdef检查并编写。但是这种方法的问题是我必须为每种日志记录方法(例如信息,跟踪,警告,错误等)编写包装器。

有没有更好的办法?

最佳答案

您可以使用set_level()禁用日志记录:

auto my_logger = spdlog::basic_logger_mt("basic_logger", "logs/basic.txt");

#if defined(PRODUCTION)
    my_logger->set_level(spdlog::level::off);
#else
    my_logger->set_level(spdlog::level::trace);
#endif

spdlog::register_logger(my_logger);

关于c++ - 如何在代码中启用/禁用spdlog日志记录?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45621996/

10-09 19:53