und werden Sie Mitglied unserer Fangruppe
Veröffentliche einen Link auf das Skript, damit die anderen ihn auch nutzen können
Bewerten Sie es im Terminal MetaTrader 5
- Ansichten:
- 62
- Rating:
- Veröffentlicht:
-
Benötigen Sie einen Roboter oder Indikator, der auf diesem Code basiert? Bestellen Sie ihn im Freelance-Bereich Zum Freelance
CDebugLogger Klasse: Ein umfassendes Logging-Dienstprogramm für MQL4/5
Die Klasse CDebugLogger ist ein leistungsstarkes und flexibles Logging-Dienstprogramm, das speziell für MQL4/5-Umgebungen entwickelt wurde. Sie ist ein unverzichtbares Werkzeug für Entwickler, die das Verhalten ihrer Anwendungen präzise überwachen, debuggen und verfolgen müssen. Im Folgenden werden die wichtigsten Funktionen und Möglichkeiten dieser Klasse erläutert.
Wichtigste Merkmale
- Mehrere Log-Ebenen: Die Klasse CDebugLogger unterstützt die Protokollierung auf verschiedenen Wichtigkeitsstufen, einschließlich INFO, WARNING, ERROR und DEBUG. Dies ermöglicht es den Entwicklern, Nachrichten von besonderer Bedeutung zu filtern und sich auf diese zu konzentrieren.
- Einschluss von Zeitstempeln: Entwickler können wählen, ob sie Zeitstempel in ihre Protokollnachrichten einfügen wollen, mit anpassbaren Formaten. Diese Funktion ist entscheidend für die Verfolgung des genauen Zeitpunkts von Ereignissen und die Fehlersuche bei zeitkritischen Problemen.
- Dateiprotokollierung: Die Klasse bietet robuste Unterstützung für die Protokollierung in Dateien. Entwickler können die Dateiprotokollierung aktivieren oder deaktivieren, den Pfad der Protokolldatei angeben und wählen, ob die Protokolle in einem gemeinsamen Ordner gespeichert werden sollen. Außerdem können die Protokolle im CSV-Format gespeichert werden, so dass sie leicht analysiert werden können.
- Kontextbezogene Informationen: Um die Klarheit der Protokollmeldungen zu verbessern, erlaubt die Klasse CDebugLogger die Einbeziehung von Funktionssignaturen, Dateinamen und Zeilennummern. Diese Kontextinformationen helfen dabei, den genauen Ort von Problemen im Code zu lokalisieren.
- Stumme Schlüsselwörter: Eine einzigartige Funktion dieser Klasse ist die Möglichkeit, Protokolle, die bestimmte Schlüsselwörter enthalten, stumm zu schalten. Dies ist besonders nützlich, um zu verhindern, dass sensible Informationen wie Kennwörter oder vertrauliche Daten protokolliert werden.
- Schlüsselwörter filtern: Eine weitere einzigartige Funktion dieser Klasse ist die Möglichkeit, Protokolle zu filtern, die bestimmte Schlüsselwörter enthalten. Dies ist besonders nützlich für die Fehlersuche, da nur Protokolle angezeigt werden, die für bestimmte Probleme relevant sind. Entwickler können die Protokollausgabe so eingrenzen, dass sie nur Meldungen enthält, die bestimmte Begriffe enthalten, so dass es einfacher ist, Probleme im Zusammenhang mit diesen Begriffen zu identifizieren und zu beheben, ohne von nicht verwandten Protokolleinträgen überwältigt zu werden.
Verwendungsbeispiel
Im Folgenden finden Sie ein Beispiel für die Initialisierung und Verwendung der Klasse CDebugLogger:
// Initialisierung des Loggers mit INFO-Protokollierung in einer Datei CDebugLogger logger(INFO, true, "log.txt", true, TIME_DATE | TIME_MINUTES, false, true, true, true); // Eine einfache Nachricht protokollieren logger.Log(INFO, "This is an info message"); // Ein Schlüsselwort stummschalten logger.AddSilentKeyword("password"); // Eine Meldung protokollieren, die zum Schweigen gebracht wird logger.Log(INFO, "User entered password: 1234"); // Aktivieren der Dateiprotokollierung logger.EnableFileLogging(true, "debug.log", false); // Ein stummgeschaltetes Schlüsselwort entfernen logger.RemoveSilentKeyword("password"); // Protokollieren einer Meldung nach dem Entfernen des Schlüsselworts aus der Silence-Liste logger.Log(INFO, "User entered password: 1234"); // Hinzufügen eines Schlüsselworts zum Filtern von Protokollen logger.AddFilterKeyword("success"); // Eine Meldung protokollieren, die herausgefiltert werden soll logger.Log(INFO, "Operation failed"); // Eine Nachricht protokollieren, die den Filter passieren wird logger.Log(INFO, "Operation successful"); // Ein Schlüsselwort aus dem Filter entfernen logger.RemoveFilterKeyword("success"); // Initialisierung mit der generischen Log-Funktion logging.Initialize(WARNING, true, "warnings.log", true, TIME_SECONDS, true, false, true, true); // Protokollieren einer Warnung mit der generischen Log-Funktion Log(WARNING, "This is a warning message");
Skript-Beispiel
Um die Klasse CDebugLogger in einem Skript zu verwenden, fügen Sie einfach die notwendige Bibliothek am Anfang Ihrer Datei ein, wie unten gezeigt:
//--- Es ist wichtig, diese Header-Datei vor allen anderen einzubinden #include <Logging.mqh> //+------------------------------------------------------------------+ //| Skript-Programmstartfunktion| //+------------------------------------------------------------------+ void OnStart() { //--- Initialisierung des Loggers mit der Stufe INFO, Protokollierung in einer Datei //--- Einschließlich Zeitstempel und Speicherung im CSV-Format int log_options = 0; // DATEINAME | ZEILE | FUNCSIG; logging.Initialize(INFO, true, "example_log.txt", true, TIME_DATE | TIME_MINUTES | TIME_SECONDS, false, log_options, true); //--- Eine einfache Informationsmeldung protokollieren Log(INFO, "Script started successfully."); //--- Protokollieren einer Warnmeldung Log(WARNING, "This is a warning message."); //--- Eine Fehlermeldung protokollieren Log(ERROR, "This is an error message."); //--- Protokollieren einer Debug-Meldung Log(DEBUG, "This is a debug message for debugging purposes."); //--- Hinzufügen eines Schlüsselworts, um Protokolle, die "password" enthalten, zum Schweigen zu bringen logging.AddSilentKeyword("password"); //--- Versuch, eine Nachricht zu protokollieren, die das Schlüsselwort "Silenced" enthält Log(INFO, "User entered password: 12348"); // Diese Nachricht wird stummgeschaltet //--- Das Schlüsselwort "Silenced" entfernen logging.RemoveSilentKeyword("password"); //--- Protokollieren Sie die Nachricht erneut, jetzt wird sie protokolliert Log(INFO, "User entered password: 1234"); //--- Verwenden Sie die generische Log-Funktion, um eine Meldung zu protokollieren Log(INFO, "This message is logged using the generic Log function."); //--- Verwenden Sie das Makro Drucken, um eine Meldung auf der Ebene INFO zu protokollieren. Print("This message is logged using the Print macro."); //--- Demonstration der Protokollierung mit verschiedenen Kombinationen von Optionen 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."); //--- Hinzufügen eines Schlüsselworts zum Filtern von Protokollen, die "wichtig" enthalten logging.AddFilterKeyword("important"); //--- Einige Meldungen zur Demonstration des Filters protokollieren Log(INFO, "This is an important message."); // Diese Nachricht wird sichtbar sein Log(INFO, "This is a regular message."); // Diese Meldung wird nicht angezeigt //--- Entfernen Sie das Schlüsselwort filter, um alle Protokolle anzuzeigen logging.RemoveFilterKeyword("important"); //--- Protokollieren einer abschließenden Meldung, die das Ende des Skripts anzeigt Log(INFO, "Script execution completed."); }
Beispiel für die CSV-Ausgabe:
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()"
Schlussfolgerung
Die CDebugLogger Klasse ist ein unschätzbares Werkzeug für jeden MQL4/5 Entwickler. Mit ihrem breiten Spektrum an anpassbaren Funktionen ermöglicht sie eine präzise Protokollierung und Überwachung von Anwendungen, was eine einfachere Fehlersuche und eine bessere Verfolgung der Anwendungsleistung ermöglicht. Egal, ob Sie eine einfache Nachrichtenprotokollierung oder detaillierte Kontextinformationen benötigen, die Klasse CDebugLogger bietet eine zuverlässige und effiziente Lösung, die auf Ihre Entwicklungsanforderungen zugeschnitten ist.
Weitere Informationen über die CDebugLogger-Klasse oder über andere fortschrittliche Tools und Lösungen finden Sie bei StormWave Technologies.
Übersetzt aus dem Englischen von MetaQuotes Ltd.
Originalpublikation: https://www.mql5.com/en/code/51817
Max trade volume checker for your trading account
Ein Dialog zur Anzeige der maximal zulässigen Losgröße für den Basiswert für verschiedene Auftragsarten (Kauf, Verkauf, schwebende Käufe und schwebende Verkäufe).
HedgeCover EA
Intelligenter Positionsschutz mit der Logik "eine Absicherung pro Position". Verfügt über eine magische Zahlentrennung, einen Cooldown-Timer und ein Limit für maximale Absicherungen. Verhindert unendliche Hedge-Schleifen. Freie MIT-Lizenz.
HiLo
Hoch- und Tiefstwertanzeiger
Save OHLCV Data from Chart to CSV File
Dieses Skript speichert alle im Diagramm verfügbaren OHLCV-Daten in einer CSV-Datei.