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

MT4 Logger

Описание

Класс CLogger предназначен для простой, но эффективной утилиты-журнала, которую можно использовать для вывода сообщений. Уровни сообщений, например, INFO или ERROR, позволяют определить их значимость. Можно указать уровень в CLogger, и тогда будут сохраняться сообщения только этого уровня и выше.

Доступны следующие уровни:

  • DEBUG: информация низкого уровня для разработчиков.
  • INFO: общая (полезная) информация о работе системы.
  • WARNING: предупреждение.
  • ERROR: ошибка.

Публичные методы

  1. LOGGER_START(minimumLevel, folderName=NULL) — запуск функции записи в журнал.

    - minimumLevel: будут сохраняться сообщения этого уровня и выше.

    - folderName: путь подпапки в <Data folder>\MQL4\Files\.

  2. LOGGER_STOP() — остановка функции записи в журнал.

  3. LOGGER_WRITE(level, message) — записывает строку в лог-файл.

    - level: тип сообщения.

    - message: текст сообщения.

  4. LOGGER_DELETE() — закрывает Logger.

Сохраненные лог-файлы доступны в папке (в меню терминала нажмите "Файл" -> "Открыть файл данных"):

<Data folder>\MQL4\Files\


Пример

<Data folder>\MQL4\Include\CLogger.mqh

enum LoggerLevel
{
    DEBUG,
    INFO,
    WARNING,
    ERROR
};

#import "CLogger.ex4"
   void LOGGER_START(LoggerLevel, string);
   void LOGGER_STOP(void);
   void LOGGER_WRITE(LoggerLevel, string);
   void LOGGER_DELETE(void);
#import

<Data folder>\MQL4\Experts\LoggerTest.mq4

#include <CLogger.mqh>
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnInit()
  {
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   LOGGER_DELETE();
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnTick()
  {
   logStart();

   static int i=1;
   if(i<=10 || (i>=20 && i<=30)) Log(INFO,StringConcatenate(i,". ",GetTickCount()));
   i++;

   logStop();
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void logStart()
  {
   LOGGER_START(DEBUG,StringConcatenate(Symbol(),"\\"));
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void logStop()
  {
   LOGGER_STOP();
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Log(LoggerLevel _type,string _text)
  {
   LOGGER_WRITE(_type,_text);

  }

See result on Screenshot.

Для корректного вызова функции библиотеку следует использовать в билде 670 и выше.
Нет отзывов