Журналирование сообщений при разработке советников

 

Здравствуйте!

При разработке советника приходится выводить в лог массу сообщений разного уровня: отладочных, ошибок, предупреждений, информационных. 

Как граммотно оформить это в коде, чтобы впоследствии можно было управлять выводом только сообщений необходимого уровня?

 
Nikolai Karetnikov:

Здравствуйте!

При разработке советника приходится выводить в лог массу сообщений разного уровня: отладочных, ошибок, предупреждений, информационных. 

Как граммотно оформить это в коде, чтобы впоследствии можно было управлять выводом только сообщений необходимого уровня?

Я сразу когда пишу код, расставляю приоритеты логов.

input int    Significance   = 0; //0-отключены, 1-только важные, 2-все.
//+------------------------------------------------------------------+
void OnTick()
  {
   PrintComm(1, "Наш текст");
  }
//+------------------------------------------------------------------+
void PrintComm(int prioritet, string txt)
  {
   bool _allow = Significance == 1 && prioritet == 1 ? true : Significance == 2 ? true : false;
   if(_allow)
      Print(txt);
  }
//+------------------------------------------------------------------+
 

В СБ есть такой подход:

Идентификатор

Описание

Значение

LOG_LEVEL_NO

Вывод сообщений отключен

0

LOG_LEVEL_ERRORS

Выводятся только сообщения об ошибках

1

LOG_LEVEL_ALL

Выводятся все сообщения

2


Наверное ещё на сайте можно что-то найти в статейных материалах. Например.

Вот ещё Василий Соколов соорудил целый класс.

Вот неплохой материал для начала.

Документация по MQL5: Стандартная библиотека / Торговые классы / CTrade / LogLevel
Документация по MQL5: Стандартная библиотека / Торговые классы / CTrade / LogLevel
  • www.mql5.com
LOG_LEVEL_NO и меньше, отключает вывод любых сообщений (автоматически устанавливается в режиме оптимизации). LOG_LEVEL_ERRORS включает вывод только сообщений об ошибках (значение по умолчанию). LOG_LEVEL_ALL и больше, включает вывод любых сообщений (автоматически устанавливается в режиме тестирования).
Причина обращения: