【问题标题】:Why Qt Creator's application output does not print from spdlog logger为什么 Qt Creator 的应用程序输出不从 spdlog 记录器打印
【发布时间】:2018-09-12 11:56:20
【问题描述】:

我正在使用 spdlog 在 Visual Studio 项目中进行日志记录。我在 Qt creator 中使用了相同的项目,然后 spdlog 日志记录不输出任何内容。但 std::cout 仍然有效并打印到 Qt 创建者的应用程序输出窗口。

std::vector<spdlog::sink_ptr> sinks;
sinks.push_back(std::make_shared<spdlog::sinks::stdout_color_sink_mt>());
sinks.push_back(std::make_shared<spdlog::sinks::basic_file_sink_mt>("multisink.txt", true));
auto appLogger = std::make_shared<spdlog::logger>("appLogger", begin(sinks), end(sinks));
appLogger->set_level(spdlog::level::debug);
spdlog::register_logger(appLogger);
spdlog::flush_on(spdlog::level::debug);    
appLogger->warn("this should appear in both console and file");

【问题讨论】:

  • 你在运行程序时是否碰巧附加了调试器?
  • 我用调试器运行,也没有调试器,两者都不输出spdlogging。
  • 您是否有任何其他调试器/IDE 正在运行?也许平台调试输出(Windows 有一个)只能由一个接收器使用?
  • 不,我目前只运行 Qt Creator。

标签: c++ qt spdlog


【解决方案1】:

是的,应用程序输出不输出 spdlogs。但是,我设法通过以下步骤输出到终端。

  1. 转到 Projects,然后选择 Run configuration for selected kit
  2. 在运行设置中,选中“在终端中运行”选项
  3. 接下来,将控制台添加到 Project pro 文件中的 CONFIG
  4. 清理项目
  5. 构建并运行。

如果这些步骤没有帮助,您可以删除整个构建目录并再次运行这些步骤。

【讨论】:

    【解决方案2】:

    我遇到了同样的问题,只有使用 msvc 记录器才能让日志消息出现在应用程序输出选项卡中。

    auto sink   = std::make_shared<spdlog::sinks::msvc_sink_mt>();
    auto logger = std::make_shared<spdlog::logger>("msvc_logger", sink);
    

    此记录器的另一面是它不会打印到控制台/终端。

    要使用同一个记录器同时写入应用程序输出和控制台,您可以创建一个分布式接收器,如下所示:

    auto console_sink = std::make_shared<spdlog::sinks::stdout_color_sink_mt>();
    auto msvc_sink    = std::make_shared<spdlog::sinks::msvc_sink_mt>();
    auto dist_sink    = std::make_shared<spdlog::sinks::dist_sink_st>();
    dist_sink->add_sink(msvc_sink);
    dist_sink->add_sink(console_sink);
    auto logger = std::make_shared<spdlog::logger>("multi_sink", dist_sink)
    logger->info("testing multiple sinks");
    

    【讨论】:

      猜你喜欢
      • 2012-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多