![](/img/trans.png)
[英]No output from heob in a Qt application using Qt Creator
[英]Why Qt Creator's application output does not print from spdlog logger
我在使用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");
是的,應用程序輸出不輸出spdlog。 但是,我設法通過以下步驟輸出到終端。
如果這些步驟沒有幫助,則可以刪除整個構建目錄,然后再次運行這些步驟。
我遇到了同樣的問題,唯一可以使日志消息顯示在應用程序輸出選項卡中的方法是使用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");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.