Почему выходные данные приложения Qt Creator не печатаются из регистратора spdlog - PullRequest
0 голосов
/ 12 сентября 2018

У меня работает логирование в проекте Visual studio с использованием spdlog.Я использовал тот же проект в 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");

Ответы [ 2 ]

0 голосов
/ 11 октября 2018

У меня была та же проблема, и единственный способ заставить сообщения журнала отображаться на вкладке вывода приложения - использовать регистратор 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");
0 голосов
/ 13 сентября 2018

Да, вывод приложения не выводит spdlogs.Но мне удается вывести на терминал, выполнив следующие действия:

  1. Перейдите в Проекты, затем выберите «Запустить конфигурацию для выбранного комплекта»
  2. В настройках запуска установите флажок «Запуск в терминале»
  3. Затем добавьте консоль в CONFIG в файле Project pro
  4. Очистите проект
  5. Постройте и запустите.

Если эти шаги не помоглипомогите, вы можете удалить весь каталог сборки и снова выполнить шаги.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...