Voir comment télécharger gratuitement des robots de trading
Retrouvez-nous sur Telegram !
Rejoignez notre page de fans
Un script intéressant ?
Poster un lien vers celui-ci -
laisser les autres l'évaluer
Vous avez aimé le script ? Essayez-le dans le terminal MetaTrader 5
Bibliothèque

Logging Class for both MQL4 and MQL5 - bibliothèque pour MetaTrader 5

Vues:
102
Note:
(7)
Publié:
Logging.mq5 (9.08 KB) afficher
\MQL5\Include\
Logging.mqh (44.87 KB) afficher
MQL5 Freelance Besoin d'un robot ou d'un indicateur basé sur ce code ? Commandez-le sur Freelance Aller sur Freelance

Classe CDebugLogger : Un utilitaire de journalisation complet pour MQL4/5

La classe CDebugLogger est un utilitaire de journalisation puissant et flexible, spécialement conçu pour les environnements MQL4/5. C'est un outil essentiel pour les développeurs qui ont besoin de surveiller, de déboguer et de suivre le comportement de leurs applications avec précision. Ci-dessous, nous explorons les principales caractéristiques et capacités de cette classe.

Caractéristiques principales

  • Plusieurs niveaux de journalisation : La classe CDebugLogger prend en charge la journalisation à différents niveaux d'importance, notamment INFO, WARNING, ERROR et DEBUG. Cela permet aux développeurs de filtrer et de se concentrer sur les messages ayant une importance particulière.
  • Inclusion de l'horodatage : Les développeurs peuvent choisir d'inclure des horodatages dans leurs messages de journalisation, avec des formats personnalisables. Cette fonctionnalité est cruciale pour suivre l'heure exacte des événements et déboguer les problèmes sensibles au temps.
  • Journalisation des fichiers : La classe fournit un support robuste pour l'enregistrement dans des fichiers. Les développeurs peuvent activer ou désactiver la journalisation des fichiers, spécifier le chemin du fichier de journalisation et choisir d'enregistrer les journaux dans un dossier commun. En outre, les journaux peuvent être enregistrés au format CSV, ce qui facilite leur analyse.
  • Informations contextuelles : Pour améliorer la clarté des messages du journal, la classe CDebugLogger permet d'inclure des signatures de fonctions, des noms de fichiers et des numéros de lignes. Ces informations contextuelles permettent de localiser précisément les problèmes dans le code.
  • Mots-clés silencieux : Une caractéristique unique de cette classe est la possibilité de rendre silencieux les journaux qui contiennent des mots-clés spécifiques. Cette fonction est particulièrement utile pour éviter que des informations sensibles, telles que des mots de passe ou des données confidentielles, ne soient enregistrées.
  • Mots clés filtrés : Une autre caractéristique unique de cette classe est la possibilité de filtrer les journaux qui contiennent des mots-clés spécifiques. Cette fonction est particulièrement utile pour le débogage, car elle permet de se concentrer uniquement sur les journaux relatifs à des problèmes spécifiques. Les développeurs peuvent limiter la sortie des journaux aux messages contenant certains termes, ce qui facilite l'identification et la résolution des problèmes liés à ces termes sans être submergés par des entrées de journaux sans rapport avec le sujet.

Exemple d'utilisation

Voici un exemple d'initialisation et d'utilisation de la classe CDebugLogger :

// Initialiser le logger avec le niveau INFO dans un fichier
CDebugLogger logger(INFO, true, "log.txt", true, TIME_DATE | TIME_MINUTES, false, true, true, true);

// Enregistrer un message simple
logger.Log(INFO, "This is an info message");

// Faire taire un mot-clé
logger.AddSilentKeyword("password");

// Enregistrer un message qui sera réduit au silence
logger.Log(INFO, "User entered password: 1234");

// Activer la journalisation des fichiers
logger.EnableFileLogging(true, "debug.log", false);

// Supprimer un mot-clé silencieux
logger.RemoveSilentKeyword("password");

// Enregistrer un message après avoir supprimé le mot-clé de la liste de silence
logger.Log(INFO, "User entered password: 1234");

// Ajouter un mot-clé pour filtrer les journaux
logger.AddFilterKeyword("success");

// Enregistrer un message qui sera filtré
logger.Log(INFO, "Operation failed");

// Enregistrer un message qui passera le filtre
logger.Log(INFO, "Operation successful");

// Supprimer un mot-clé du filtre
logger.RemoveFilterKeyword("success");

// Initialisation à l'aide de la fonction générique Log
logging.Initialize(WARNING, true, "warnings.log", true, TIME_SECONDS, true, false, true, true);

// Enregistrer un avertissement à l'aide de la fonction générique Log
Log(WARNING, "This is a warning message");

Exemple de script

Pour utiliser la classe CDebugLogger dans un script, il suffit d'inclure la bibliothèque nécessaire au début de votre fichier, comme indiqué ci-dessous :

//--- Il est important d'inclure ce fichier d'en-tête avant tous les autres
#include <Logging.mqh>  


//+------------------------------------------------------------------+
//| Fonction de démarrage du programme de script|
//+------------------------------------------------------------------+
void OnStart()
{
   //--- Initialiser le logger avec le niveau INFO, en l'enregistrant dans un fichier
   //--- Inclure les horodatages et enregistrer au format CSV
   int log_options = 0; // NOM DE FICHIER | LIGNE | FUNCSIG ;
   logging.Initialize(INFO, true, "example_log.txt", true, TIME_DATE | TIME_MINUTES | TIME_SECONDS, false, log_options, true);

   //--- Enregistrer un simple message d'information
   Log(INFO, "Script started successfully.");

   //--- Enregistrer un message d'avertissement
   Log(WARNING, "This is a warning message.");

   //--- Enregistrer un message d'erreur
   Log(ERROR, "This is an error message.");

   //--- Enregistrer un message de débogage
   Log(DEBUG, "This is a debug message for debugging purposes.");

   //--- Ajouter un mot-clé pour faire taire les logs contenant 'password'
   logging.AddSilentKeyword("password");

   //--- Tentative d'enregistrement d'un message contenant le mot-clé silence
   Log(INFO, "User entered password: 12348"); // Ce message sera rendu silencieux

   //--- Supprimer le mot clé silencieux
   logging.RemoveSilentKeyword("password");

   //--- Enregistrer le message à nouveau, maintenant il sera enregistré
   Log(INFO, "User entered password: 1234");

   //--- Utiliser la fonction générique Log pour enregistrer un message
   Log(INFO, "This message is logged using the generic Log function.");

   //--- Utiliser la macro Print pour enregistrer un message au niveau INFO
   Print("This message is logged using the Print macro.");

   //--- Démonstration de la journalisation avec différentes combinaisons d'options
   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.");

   //--- Ajouter un mot-clé pour filtrer les journaux contenant 'important'
   logging.AddFilterKeyword("important");

   //--- Enregistrer quelques messages pour démontrer l'efficacité du filtre
   Log(INFO, "This is an important message."); // Ce message sera visible
   Log(INFO, "This is a regular message.");    // Ce message ne sera pas visible

   //--- Enlever le mot clé "filter" pour afficher tous les logs
   logging.RemoveFilterKeyword("important");

   //--- Enregistrer un message final indiquant la fin du script
   Log(INFO, "Script execution completed.");
}

Exemple de sortie 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()"

Conclusion

La classe CDebugLogger est un outil inestimable pour tout développeur MQL4/5. Grâce à son large éventail de fonctionnalités personnalisables, elle permet une journalisation et un suivi précis des applications, ce qui facilite le débogage et améliore le suivi des performances de l'application. Que vous ayez besoin d'un simple enregistrement de message ou d'informations contextuelles détaillées, la classe CDebugLogger fournit une solution fiable et efficace adaptée à vos besoins de développement.

Pour plus d'informations sur la classe CDebugLogger ou pour découvrir d'autres outils et solutions avancés, visitez le site de StormWave Technologies.

Traduit de l’anglais par MetaQuotes Ltd.
Code original : https://www.mql5.com/en/code/51817

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

Boîte de dialogue permettant d'afficher la taille maximale du lot autorisé sur l'actif sous-jacent pour différents types d'ordres (achat, vente, achat en suspens et vente en suspens).

IncAMAOnArray IncAMAOnArray

La classe SAMAOnAgro est destinée au calcul des valeurs de l'indicateur AMA (Adaptive Moving Average) par les tampons d'indicateurs.

Bougies de transformation X2MA Bougies de transformation X2MA

L'indicateur transfère les données de prix dans un nouveau système de coordonnées, associé aux valeurs de l'indicateur X2MA.

XTrendlessOS (oscillateur sans tendance) XTrendlessOS (oscillateur sans tendance)

L'indicateur est écrit selon la description donnée dans le livre de Joe DiNapoli "Trading Using DiNapoli Levels". L'indicateur est conçu pour évaluer le véritable marché suracheté/survendu.