Assista a como baixar robôs de negociação gratuitos
Encontre-nos em Telegram!
Participe de nossa página de fãs
Script interessante?
Coloque um link para ele, e permita que outras pessoas também o avaliem
Você gostou do script?
Avalie seu funcionamento no terminal MetaTrader 5
Bibliotecas

Logging Class for both MQL4 and MQL5 - biblioteca para MetaTrader 5

Visualizações:
99
Avaliação:
(7)
Publicado:
\MQL5\Include\
Freelance MQL5 Precisa de um robô ou indicador baseado nesse código? Solicite-o no Freelance Ir para Freelance

Classe CDebugLogger: Um utilitário de registro abrangente para MQL4/5

A classe CDebugLogger é um utilitário de registro poderoso e flexível, projetado especificamente para ambientes MQL4/5. É uma ferramenta essencial para os desenvolvedores que precisam monitorar, depurar e rastrear o comportamento de seus aplicativos com precisão. A seguir, exploraremos os principais recursos e capacidades dessa classe.

Principais recursos

  • Vários níveis de registro: A classe CDebugLogger é compatível com o registro em log em diferentes níveis de importância, incluindo INFO, WARNING, ERROR e DEBUG. Isso permite que os desenvolvedores filtrem e se concentrem em mensagens de importância específica.
  • Inclusão de carimbo de data/hora: Os desenvolvedores podem optar por incluir carimbos de data/hora em suas mensagens de registro, com formatos personalizáveis. Esse recurso é fundamental para rastrear a hora exata dos eventos e depurar problemas sensíveis ao tempo.
  • Registro em log de arquivos: A classe oferece suporte robusto para registro em log de arquivos. Os desenvolvedores podem ativar ou desativar o registro em arquivo, especificar o caminho do arquivo de registro e escolher se desejam salvar os registros em uma pasta comum. Além disso, os registros podem ser salvos em um formato CSV, o que facilita a análise e a análise.
  • Informações contextuais: Para aumentar a clareza das mensagens de registro, a classe CDebugLogger permite a inclusão de assinaturas de funções, nomes de arquivos e números de linhas. Essas informações contextuais ajudam a identificar o local exato dos problemas no código.
  • Palavras-chave silenciosas: Um recurso exclusivo dessa classe é a capacidade de silenciar os registros que contêm palavras-chave específicas. Isso é particularmente útil para evitar que informações sensíveis, como senhas ou dados confidenciais, sejam registradas.
  • Filtrar palavras-chave: Outro recurso exclusivo dessa classe é a capacidade de filtrar os logs que contêm palavras-chave específicas. Isso é particularmente útil para a depuração, concentrando-se apenas nos registros que são relevantes para problemas específicos. Os desenvolvedores podem restringir a saída de log para incluir apenas mensagens que contenham determinados termos, facilitando a identificação e a solução de problemas relacionados a esses termos sem serem sobrecarregados por entradas de log não relacionadas.

Exemplo de uso

Abaixo está um exemplo de como inicializar e usar a classe CDebugLogger:

// Inicializar o registrador com o registro de nível INFO em um arquivo
CDebugLogger logger(INFO, true, "log.txt", true, TIME_DATE | TIME_MINUTES, false, true, true, true);

// Registre uma mensagem simples
logger.Log(INFO, "This is an info message");

// Silenciar uma palavra-chave
logger.AddSilentKeyword("password");

// Registre uma mensagem que será silenciada
logger.Log(INFO, "User entered password: 1234");

// Ativar o registro de arquivos
logger.EnableFileLogging(true, "debug.log", false);

// Remover uma palavra-chave silenciada
logger.RemoveSilentKeyword("password");

// Registre uma mensagem após remover a palavra-chave da lista de silêncio
logger.Log(INFO, "User entered password: 1234");

// Adicione uma palavra-chave para filtrar os registros
logger.AddFilterKeyword("success");

// Registre uma mensagem que será filtrada
logger.Log(INFO, "Operation failed");

// Registre uma mensagem que passará pelo filtro
logger.Log(INFO, "Operation successful");

// Remover uma palavra-chave do filtro
logger.RemoveFilterKeyword("success");

// Inicializar usando a função genérica Log
logging.Initialize(WARNING, true, "warnings.log", true, TIME_SECONDS, true, false, true, true);

// Registre um aviso usando a função genérica Log
Log(WARNING, "This is a warning message");

Exemplo de script

Para utilizar a classe CDebugLogger em um script, basta incluir a biblioteca necessária no início do arquivo, conforme mostrado abaixo:

//--- É importante incluir esse arquivo de cabeçalho antes de todos os outros
#include <Logging.mqh>  


//+------------------------------------------------------------------+
//| Função de início do programa de script|
//+------------------------------------------------------------------+
void OnStart()
{
   //--- Inicialize o registrador com o nível INFO, registrando em um arquivo
   //--- Incluindo registros de data e hora e salvando no formato CSV
   int log_options = 0; // NOME DO ARQUIVO | LINHA | FUNCSIG;
   logging.Initialize(INFO, true, "example_log.txt", true, TIME_DATE | TIME_MINUTES | TIME_SECONDS, false, log_options, true);

   //--- Registre uma mensagem informativa simples
   Log(INFO, "Script started successfully.");

   //--- Registre uma mensagem de aviso
   Log(WARNING, "This is a warning message.");

   //--- Registre uma mensagem de erro
   Log(ERROR, "This is an error message.");

   //--- Registre uma mensagem de depuração
   Log(DEBUG, "This is a debug message for debugging purposes.");

   //--- Adicione uma palavra-chave para silenciar os registros que contenham 'password'
   logging.AddSilentKeyword("password");

   //--- Tentativa de registrar uma mensagem contendo a palavra-chave silenced
   Log(INFO, "User entered password: 12348"); // Essa mensagem será silenciada

   //--- Remover a palavra-chave silenciada
   logging.RemoveSilentKeyword("password");

   //--- Registre a mensagem novamente, agora ela será registrada
   Log(INFO, "User entered password: 1234");

   //--- Use a função genérica Log para registrar uma mensagem
   Log(INFO, "This message is logged using the generic Log function.");

   //--- Use a macro Print para registrar uma mensagem no nível INFO
   Print("This message is logged using the Print macro.");

   //--- Demonstrar o registro em log com diferentes combinações de opções
   logging.Initialize(INFO, true, "log_with_options.txt", true, TIME_DATE | TIME_MINUTES, false, FILENAME | LINE, true);
   Log(INFO, "This log includes only the file name and line number.");

   logging.Initialize(INFO, true, "log_with_funcsig.txt", true, TIME_DATE | TIME_MINUTES | TIME_SECONDS, false, FUNCSIG, true);
   Log(INFO, "This log includes only the function signature.");

   logging.Initialize(INFO, true, "log_custom_order.txt", true, TIME_MINUTES, false, LINE | FILENAME | FUNCSIG, true);
   Log(INFO, "This log includes line number, file name, and function signature in a custom order.");

   //--- Adicione uma palavra-chave para filtrar os registros que contêm "important
   logging.AddFilterKeyword("important");

   //--- Registre algumas mensagens para demonstrar o filtro
   Log(INFO, "This is an important message."); // Essa mensagem ficará visível
   Log(INFO, "This is a regular message.");    // Essa mensagem não será visível

   //--- Remova a palavra-chave filter para mostrar todos os registros
   logging.RemoveFilterKeyword("important");

   //--- Registre uma mensagem final indicando o fim do script
   Log(INFO, "Script execution completed.");
}

Exemplo de saída CSV:

Timestamp,Level,Message
"2024.09.01 18:31:44","INFO","Script started successfully."
"2024.09.01 18:31:44","WARNING","This is a warning message."
"2024.09.01 18:31:44","ERROR","This is an error message."
"2024.09.01 18:31:44","DEBUG","This is a debug message for debugging purposes."
"2024.09.01 18:31:44","INFO","User entered password: 1234"
"2024.09.01 18:31:44","INFO","This message is logged using the generic Log function."
"2024.09.01 18:31:44","INFO","This message is logged using the Print macro."
Timestamp,Level,Message,Filename,Line
"2024.09.01 18:31","INFO","This log includes only the file name and line number.","Logging.mq5","135"
Timestamp,Level,Message,Funcsig
"2024.09.01 18:31:44","INFO","This log includes only the function signature.","void OnStart()"
Timestamp,Level,Message,Filename,Line,Funcsig
"18:31","INFO","This log includes line number, file name, and function signature in a custom order.","Logging.mq5","141","void OnStart()"
"18:31","INFO","This is an important message.","Logging.mq5","147","void OnStart()"
"18:31","INFO","Script execution completed.","Logging.mq5","154","void OnStart()"

Conclusão

A classe CDebugLogger é uma ferramenta inestimável para qualquer desenvolvedor de MQL4/5. Com sua ampla gama de recursos personalizáveis, ela permite o registro e o monitoramento precisos dos aplicativos, facilitando a depuração e o acompanhamento do desempenho do aplicativo. Quer você precise de um simples registro de mensagens ou de informações contextuais detalhadas, a classe CDebugLogger oferece uma solução confiável e eficiente, adaptada às suas necessidades de desenvolvimento.

Para obter mais informações sobre a classe CDebugLogger ou para explorar outras ferramentas e soluções avançadas, visite a StormWave Technologies.

Traduzido do inglês pela MetaQuotes Ltd.
Publicação original: https://www.mql5.com/en/code/51817

Max trade volume checker for your trading account Max trade volume checker for your trading account

Uma caixa de diálogo para exibir o tamanho máximo do lote permitido no ativo subjacente para diferentes tipos de ordens (compra, venda, compra pendente e venda pendente).

HedgeCover EA HedgeCover EA

Proteção inteligente da posição com lógica de um hedge por posição. Apresenta separação por número mágico, cronômetro de resfriamento e limite máximo de hedges. Evita loops de hedge infinitos. Licença MIT gratuita.

HiLo HiLo

Indicador de linha alta e baixa

Save OHLCV Data from Chart to CSV File Save OHLCV Data from Chart to CSV File

Esse script salva todos os dados OHLCV disponíveis no gráfico em um arquivo CSV.