Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Не можешь найти ответ на вопрос? Воспользуйся поиском!
MetaQuotes Software Corp.
Модератор
177353
MetaQuotes Software Corp. 2015.11.06 14:08 

На mql5.com опубликована статья Обработка ошибок и логирование в MQL5:

В статье рассматриваются общие вопросы обработки ошибок в программном обеспечении. Кроме того, затрагивается тема логирования и демонстрируется пример реализации логгера средствами MQL5.

В процессе работы большинства программ время от времени могут возникать ошибки. Их адекватная обработка — один из важных аспектов функционирования качественного и устойчивого программного обеспечения. В данной статье будут рассмотрены основные методы обработки ошибок, будут даны рекомендации по их применению, а также будет рассмотрен вопрос логирования средствами MQL5.

Обработка ошибок является довольно непростой и неоднозначной темой. Существует множество способов обработки ошибок, каждый из которых обладает теми или иными достоинствами и недостатками. Многие из этих способов допускают совместное использование, однако универсального рецепта не существует — для каждой конкретной задачи следует выбирать адекватный задаче подход.


Логирование средствами MQL5

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

Уровни логирования

Сообщения, которые поступают в лог-файлы, чаще всего несут в себе разную критичность и требуют к себе разного внимания. Для того чтобы отделять сообщения разной критичности друг от друга, а также иметь возможность настройки степени критичности выводимых сообщений, применяются уровни логирования. Как правило, реализуется несколько уровней логирования:

  • Debug: отладочные сообщения. Этот уровень логирования включается на этапах разработки, отладки и пуско-наладочных работ.
  • Info: информационные сообщения. Они несут в себе информацию о различных действиях системы (например: начало/окончание работы, открытие/закрытие сделок и т.п.). Обычно сообщения этого уровня не требуют никакой реакции, но могут ощутимо помочь при изучении цепочек событий, приведших к тем или иным ошибкам работы.
  • Warning: предупреждающие сообщения. Данный уровень сообщений может включать в себя описание ситуаций, приведших к ошибкам, которые не требуют вмешательства пользователя. К примеру, если рассчитанный объем сделки оказался меньше минимально допустимого, и программа автоматически его скорректировала, то об этом можно сообщить в лог-файл с уровнем «Warning».
  • Error: сообщения об ошибках, которые требуют явного вмешательства. Этот уровень логирования обычно применяется при возникновении ошибок вроде невозможности сохранения какого-то файла, открытия или модификации сделки и т.п. Иными словами, сюда попадают ошибки, которые программа не в состоянии самостоятельно преодолеть и которые требуют явного вмешательства (пользователя или программиста).
  • Fatal: сообщения о критических ошибках, которые приводят к невозможности дальнейшей работы программы. Такие сообщения требуют как можно более быстрой реакции, нередко для этого уровня предусматривается оповещение пользователя или программиста посредством электронной почты, SMS и т.п. Как будет показано далее, в MQL5 для оповещений можно применять PUSH-уведомления.
2015.09.23 09:02:10, USDCAD (D1), INFO: 
2015.09.23 09:02:10, USDCAD (D1), INFO: ---------- OnInit() -----------
2015.09.23 09:02:10, USDCAD (D1), DEBUG: Example of debug message (LoggerTest.mq5; int OnInit(); Line: 36)
2015.09.23 09:02:10, USDCAD (D1), INFO: Example of info message (LoggerTest.mq5; int OnInit(); Line: 38)
2015.09.23 09:02:10, USDCAD (D1), WARNING: Example of warning message (LoggerTest.mq5; int OnInit(); Line: 40)
2015.09.23 09:02:10, USDCAD (D1), ERROR: Example of error message (LoggerTest.mq5; int OnInit(); Line: 42)
2015.09.23 09:02:10, USDCAD (D1), FATAL: Example of fatal message (LoggerTest.mq5; int OnInit(); Line: 44)

Автор: Sergey Eremin

/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий