Я хочу регистрировать множество событий в динамическом алгоритме поиска (например, информацию о сходимости к глобальному оптимуму). Эта регистрация должна иметь переключатель, чтобы выключить / включить. Сейчас есть много возможностей для достижения этой цели:
- реализовать лог-версию и не лог-версию алгоритма -> избыточность
- использовать макросы -> некрасиво и небезопасно
- использовать библиотеку журналов c ++ (или: использовать 1% функционального диапазона библиотеки журналов).
Я решил использовать Pantheios , особенно из-за заявленных требований к производительности (не хочу терять большую производительность из-за этой регистрации, которая необходима только при разработке). Я должен признать, что мне не нужно много функциональных возможностей этой библиотеки, но я подумал, что я был бы гораздо более приятным / безопасным способом ее использования. Может быть, была бы более подходящая альтернатива, о которой я не знаю (мне нужны решения времени компиляции только для ведения журнала -> не знаю, существуют ли библиотеки для ведения журнала, предназначенные для этой цели).
После компиляции, установки и окончательной компоновки (без успешной компоновки вручную, но с помощью инструмента построения scons ; с использованием gcc -> явная компоновка) я хотел попробовать небольшой пример.
Давайте сведем это к следующему:
#include "pantheios/pantheios.hpp"
#include "pantheios/frontends/stock.h"
const PAN_CHAR_T PANTHEIOS_FE_PROCESS_IDENTITY[] = "pantheios_test"; // specify process identity
int main()
{
pantheios::log_ALERT("alert-event");
pantheios::log_DEBUG("debug-event");
pantheios::log_INFORMATIONAL("just information");
return 1;
}
Связывание выполняется со следующими файлами:
LIBS=['pantheios.1.core.gcc44', 'pantheios.1.be.fprintf.gcc44', 'pantheios.1.bec.fprintf.gcc44',
'pantheios.1.fe.all.gcc44', 'pantheios.1.util.gcc44']
Теперь простой вопрос: как включить / выключить выход консоли? Как выбрать уровень серьезности, который предоставляется бэкэнду?
Просмотр документации привел меня к множеству функций, которые имеют уровень серьезности, но эти функции автоматически вызываются один раз для инициализации. Я знаю, что возможны динамические изменения уровней серьезности. Я точно не знаю, где я могу изменить эти настройки. Я думаю, они должны быть в компоненте внешнего интерфейса. Ссылка на "fe_all" - это уже какое-то решение, какой уровень регистрируется, а какой нет?
Это должно быть относительно просто, потому что в моем случае мне нужно только решение во время компиляции о входе / выходе из системы.
Спасибо за вашу помощь.
Sascha