• Обзор
  • Отзывы
  • Обсуждение (1)

Log4MQL logger

На вкладке "Обсуждение" доступно полное описание продукта.

MetaTrader и язык MQL4/5 превосходно подходят для создания автоматической торговой системы. Но мне не доставало некоторых возможностей для записи в журнал пользовательских сообщений и информации во время работы с торговыми системами, пользовательскими скриптами или индикаторами. Одним из вариантов является использование функции Print, которая впоследствии позволяет читать сообщения в окне журнала. Недостатки окна журнала:

  • медленное обновление при печати множества сообщений
  • не предусмотрен поиск
  • удаляется после выхода из MetaTrader
  • нельзя увеличивать приоритет сообщений и использовать свойства выделения сообщений
Поэтому я и создал данный логгер для языка MQL. Основные свойства и преимущества логгера:
  • возможность записи во внешний пользовательский файл, который можно заархивировать, отправить по электронной почте, прочитать при помощи определенных скриптов и т.д.
  • четыре уровня сообщений: DEBUG, INFO, WARN, ERROR
  • файлы журнала могут отображаться при помощи некоторых сторонних парсеров и использовать их функции выделения
  • быстрая запись в файлы для вывода, сообщения немедленно записываются в файлы журнала (отсутствие задержек)
  • простой API, простое включение в ваш код и такое же простое использование


Инструкции

1) Скачать и установить Log4mql

Скачайте и установите Log4mql из Маркета.

2) Включить/импортировать Log4mql в ваш код MQL

В файле Log4mql.mqh содержится характеристика открытого интерфейса логгера, его методы, конструктор и деструктор класса. Сам логгер содержится в файле Log4mqlImpl.ex4

Файл Log4mql.mqh необходимо скачать или создать вручную (зайдите на вкладку обсуждений, где даны подробные инструкции)

Указанный ниже фрагмент кода демонстрирует включение логгера в ваш код

#include "../libraries/Log4mql.mqh"

#import "../libraries/Log4mqlImpl.ex4"

Log4mql *Log4mqlImpl();

Log4mql *Log4mqlImpl(string filename, string level, string delimiter);

#import

3) Объявление и инициализация логгера

Экземпляр класса логгера можно получить следующим образом

Log4mql *logger = Log4mqlImpl("test.log","DEBUG",";");

//или же вы можете определить только переменную логгера на глобальном уровне, а инициализацию провести позже

Log4mql *logger; // глобальная переменная

.

.

logger = Log4mqlImpl("test.log","DEBUG",";");

4) Записывайте в журнал все, что пожелаете ...

logger.debug("This is DEBUG message");

logger.info("This is INFO message");

logger.warn("This is WARN message");

logger.error("This is ERROR message");

Уровни логгера имеют следующие приоритеты

  • ERROR=2
  • WARN=4
  • INFO=8
  • DEBUG=16

Логгер занесет в журнал все сообщения с уровнем, равным или ниже уровня логгера. При установке уровня логгера WARN в журнал заносятся сообщения уровня WARN и ERROR. При установке уровня логгера INFO в журнал заносятся сообщения уровня INFO, WARN и ERROR. и т.д.

Все файлы для вывода хранятся в папке FILES в папке установки MetaTrader, например "[MetaTrader home]\MQL4\Files\"


Примеры

1) Логгер заносит записи в файл example.log, уровень записей установлен в значение DEBUG, а элементы сообщения разделяются точкой с запятой

#include "../libraries/Log4mql.mqh"

#import "../libraries/Log4mqlImpl.ex4"

Log4mql *Log4mqlImpl();

Log4mql *Log4mqlImpl(string filename, string level, string delimiter);

#import


//+------------------------------------------------------------------+

//| Функция начала работы скрипта |

//+------------------------------------------------------------------+

void OnStart()

{

Log4mql *logger = Log4mqlImpl("example.log","DEBUG",";");

logger.info("Script has been started");

logger.warn("Message with some WARNING");

logger.error("Error during execution of script");

}

//+------------------------------------------------------------------+

Содержимое example.log

2015.07.08 23:14:23;logger_test_4;INFO;Script has been started

2015.07.08 23:14:23;logger_test_4;WARN;Message with some WARNING

2015.07.08 23:14:23;logger_test_4;ERROR;Error during execution of script


Мониторинг/выделения файлов журнала

Файлами журнала можно управлять при помощи какого-либо парсера. Данный инструмент может выделять различные уровни сообщений в журнале и выполнять внешние скрипты (например, отправлять письмо по электронной почте при записи сообщения уровня ERROR).

Нет отзывов