Skip to content

Logify é uma biblioteca de registros para MQL projetada para simplificar a depuração, o rastreamento e o monitoramento de EAs e indicadores.

Notifications You must be signed in to change notification settings

joaopedrodevms/Logify

Repository files navigation

Logify

Logify é uma biblioteca de registros para MQL projetada para simplificar a depuração, o rastreamento e o monitoramento de EAs e indicadores. Ela fornece registros estruturados, personalizáveis ​​e organizados diretamente no gráfico ou no terminal, com suporte para níveis de registro, formatos flexíveis e múltiplos manipuladores. Uma solução leve e elegante, fácil de integrar aos seus projetos MQL.

📦 Funcionalidades

  • Múltiplos níveis de log: DEBUG, INFO, ALERTA, ERRO, FATAL
  • Exibe logs diretamente no gráfico, terminal, arquivos ou até mesmo no banco de dados
  • Formato e layout de log personalizáveis
  • Arquitetura modular com múltiplos manipuladores
  • Leve e fácil de integrar e usar

🚀 Instalação

  1. Copie a pasta /Logify para:
MQL5/Include/
  1. Inclua o Logify no seu EA, indicador ou script:
#include <Logify/Logify.mqh>

🔧 Exemplo de início rápido

Exemplo simples com configurações padrão:

//+------------------------------------------------------------------+
//| Import                                                           |
//+------------------------------------------------------------------+
#include <Logify/Logify.mqh>
CLogify Logify;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   //--- Example logs
   Logify.Debug("Initialization started");
   Logify.Info("Account balance is OK");
   Logify.Alert("Take profit reached");
   Logify.Error("Failed to send order", "Order", "Reason: No money");
   Logify.Fatal("Critical error: Invalid input parameters");

   //---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+

Exemplo avançado, com configurações personalizadas do manipulador. Neste exemplo, salvamos o registro de log em arquivos e no comentário do gráfico. Personalizamos as configurações para cada um deles.

//+------------------------------------------------------------------+
//| Import                                                           |
//+------------------------------------------------------------------+
#include <Logify/Logify.mqh>
CLogify Logify;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   //--- Configure comment handler
   MqlLogifyHandleCommentConfig config_comment;
   config_comment.size = 10;
   config_comment.frame_style = LOG_FRAME_STYLE_SINGLE;
   config_comment.direction = LOG_DIRECTION_UP;
   config_comment.title = "My Expert";

   //--- Create and configure comment handler
   CLogifyHandlerComment *handler_comment = new CLogifyHandlerComment();
   handler_comment.SetConfig(config_comment);
   handler_comment.SetLevel(LOG_LEVEL_DEBUG);
   handler_comment.SetFormatter(new CLogifyFormatter("{date_time} [{levelname}]: {msg}","hh:mm:ss"));
   
   //--- Configure file handler
   MqlLogifyHandleFileConfig file_config;
   file_config.CreateDateRotationConfig("my_expert","logs",LOG_FILE_EXTENSION_LOG,10,100,CP_UTF8);
   
   //--- Create and configure file handler
   CLogifyHandlerFile *handler_file = new CLogifyHandlerFile();
   handler_file.SetConfig(file_config);
   handler_file.SetLevel(LOG_LEVEL_DEBUG);
   handler_file.SetFormatter(new CLogifyFormatter("{date_time} [{levelname}]: {msg} ({filename} | {origin} | {function})","hh:mm:ss"));
   
   //--- Attach handler
   Logify.AddHandler(handler_comment);
   Logify.AddHandler(handler_file);

   //--- Example logs
   Logify.Debug("Initialization started");
   Logify.Info("Account balance is OK");
   Logify.Alert("Take profit reached");
   Logify.Error("Failed to send order", "Order", "Reason: No money");
   Logify.Fatal("Critical error: Invalid input parameters");
   
   //---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+

Para entender cada uma das configurações, recomendo a leitura dos artigos abaixo, onde explico cada etapa do desenvolvimento da biblioteca:

✔️ Níveis de Log

Nível Descrição
DEBUG Informações detalhadas para depuração
INFO informações gerais
WARNING Avisos ou eventos importantes
ERROR Erros que requerem atenção
FATAL Erros críticos, interromper execução

🖥️ Handlers incluídos

Cada manipulador define onde os logs serão exibidos ou armazenados.

Handler Descrição
Comment Exibir logs diretamente no gráfico (Comentário)
Console Mostrar logs no terminal MetaTrader
File Salvar logs em arquivos .txt ou .log
Database Armazena logs no banco de dados SQLite local

Você pode usar um ou combinar vários manipuladores ao mesmo tempo, como gráfico + arquivo + console, por exemplo.

🛠️ Formato de log

Exemplo de padrão de formatação:

"{date_time} [{levelname}]: {msg}"

Tokens disponíveis:

  • {levelname}: Nome do nível (DEBUG, INFO, ERROR, etc.)
  • {msg}: Mensagem principal
  • {args}: Argumentos ou detalhes adicionais
  • {timestamp}: Carimbo de data/hora em segundos (Horário Unix)
  • {date_time}: Data e hora formatadas (hh:mm:ss, etc.)
  • {level}: Código numérico para o nível (0 = DEBUG, 1 = INFO...)
  • {origin}: Origem ou contexto definido na chamada do log
  • {filename}: Nome do arquivo de origem (se disponível)
  • {function}: Nome da função da qual foi chamado
  • {line}: Número da linha no código onde o log ocorreu

⚖️ Licença

Licença MIT — Gratuita para uso em projetos pessoais e comerciais.

👨‍💻 Autor

Desenvolvido por joaopedrodev, com foco em tornar o desenvolvimento MQL mais profissional, organizado e eficiente.

About

Logify é uma biblioteca de registros para MQL projetada para simplificar a depuração, o rastreamento e o monitoramento de EAs e indicadores.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published