Rejoignez notre page de fans
- Vues:
- 102
- Note:
- Publié:
-
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
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
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
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)
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.