За основу взяты классы Logger и MessageFormatter из библиотеки SLF4J.
Подключение
Достаточно вставить:
#include <Log4MQL.mqh>
Но для переопределение уровня логирования нужна такая последовательность кода:#define _LOG_PARAM #include <Log4MQL.mqh> input LOG_LEVEL loglevel = LOG_WARN; // Log LevelА для переопределения класса:
#define _LOG_CLASS CMyLog #include <Log4MQL.mqh>
"Юзай макросы, Люк..."
Для обхода синтаксических ограничений MQL5 пришлось использовать макросы.
Перегрузка макросов по количеству параметров в MQL5 не работает.
#define DEF(a1) Print(a1) #define DEF(a1,a2) Print(a1,a2) // WARN: macro redefinitionvoid OnStart() { DEF("111"); // ERROR: 'DEF' - not actual parameters count for macro // 'DEF' - undeclared identifier
DEF("222", 333); }
Для обхода этого ограничения добавлено количество параметров к имени макроса:
lgDebug0("Только текст"); lgDebug2("Значения 1={}, 2={}", "Привет", 100);
Запись лога в файл
#include <Log4MQL_toFile.mqh>
Переопределенный класс, который записывает все сообщения в файл.
Но больше - это тест наследственности классов без изменения принципов использования. /// "Нелогичность" реализации некоторых частей класса связана с ограничениями MQL в .
Примеры
// тут пример и вывод с обычный
// тут с файлом
Мониторинг логов
Саму библиотеку можно использовать и просто так, но именно расширяемость парсера LogMX подтолкнула меня на создание библиотеки.
LogMX создан на Java, поэтому запускается на многих ОСях.
Так же LogMX поставляется в бесплатной и платной версии. В платной версии можно всю папку логов для мониторинга задать.
Архив LogMX_Log4MQL.zip (исходник тоже в архиве) нужно распаковать в // тут путь в Линуксе и Вине узнать
Но вот скирины с настройками LogMX для мониторинга логов: