Discussão do artigo "A arte de trabalhar com logs (Parte 8): Registros de erros com tradução automática"

Novo artigo A arte de trabalhar com logs (Parte 8): Registros de erros com tradução automática foi publicado:

Nesta oitava parte da série "A arte de trabalhar com logs", vamos explorar a implementação de mensagens de erro multilíngues no Logify, uma poderosa biblioteca de logging para MQL5. Você aprenderá a estruturar erros com informações de contexto, traduzir mensagens para vários idiomas e formatar logs dinamicamente conforme o nível de logging. Tudo isso com uma arquitetura limpa, extensível e pronta para produção.

Neste ponto da nossa jornada, já está claro que trabalhar com logs vai muito além de simplesmente registrar eventos. Trata-se de entender com precisão o que seu EA está tentando comunicar em meio ao turbilhão de ticks, decisões e incertezas que fazem parte do trading algorítmico.

Durante o uso diário do Logify, percebi algo que me incomodava: o tratamento de erros ainda era superficial. Mesmo com uma estrutura robusta de formatação, os logs continuavam exibindo apenas o código numérico do erro, sem explicar seu significado. Algo como:

logify.Error("Failed to send sell order", "Order Management", "Code: "+IntegerToString(GetLastError()));
// Console:
// 2025.06.06 10:30:00 [ERROR]: (Order Management) Failed to send sell order | Code: 10016

O resultado? Uma mensagem vaga. Sabemos onde o erro ocorreu, mas não sabemos por quê. E quem nunca precisou consultar a documentação para descobrir o significado de dezenas de códigos de erro do MQL5? Eu mesmo fazia isso com bastante frequência: sempre que recebia um código de erro, precisava recorrer à documentação para entender o que realmente havia acontecido. Foi justamente esse incômodo que me deu uma ideia: e se o Logify pudesse interpretar o erro por mim? E se, em vez de exibir apenas o código, ele apresentasse seu significado de forma clara, contextualizada e pronta para ser registrada no log?


Autor: joaopedrodev

As duas bibliotecas que você criou são excelentes. Obrigado pelo código.
Obrigado, fico feliz em ajudar. Se tiver alguma sugestão de melhoria, entre em contato comigo!
joaopedrodev #:
Obrigado, fico feliz em ajudar. Se tiver alguma sugestão de melhoria, entre em contato comigo!
O que devo fazer se o registro for muito frequente, mas eu quiser evitar impressões repetidas? Por exemplo, quando um sinal de abertura de negociação é detectado, mas o spread é muito grande e persiste por dezenas de segundos — se o registro for usado, ele seria exibido pelo menos dezenas ou até centenas de vezes. Como essa situação pode ser resolvida? Sei que uma solução é usar uma variável para garantir que o registro seja exibido apenas uma vez, mas seria melhor se a própria biblioteca de registro pudesse lidar com isso. Você poderia dar algumas sugestões?

Compilei a biblioteca de registro Logify e, a partir da versão 5100 do MT5, surgiram vários erros de compilação relacionados a tipos na função `CLogifyHandlerDatabase ::Query`. Acredito que vocês já devam ter resolvido esse problema.
Obrigado pelas sugestões; abordarei esse assunto em artigos futuros.
joaopedrodev #:
Obrigado pelas sugestões; vou abordá-las em artigos futuros.

Uma pequena sugestão sobre os idiomas.

Talvez seja possível organizar as notícias originais em inglês de forma que possam ser facilmente copiadas e coladas em um tradutor (deepl.com ou translate.google.com) e o resultado seja inserido de volta no programa. Assim, qualquer pessoa poderá configurar o programa para o seu idioma com muita facilidade.

O Deepl reconhece 36 idiomas, e o Google, cerca de 130.