Schau, wie man Roboter kostenlos herunterladen kann
Finden Sie uns auf Twitter!
und werden Sie Mitglied unserer Fangruppe
Interessantes Skript?
Veröffentliche einen Link auf das Skript, damit die anderen ihn auch nutzen können
Hat Ihnen das Skript gefallen?
Bewerten Sie es im Terminal MetaTrader 5
Bibliotheken

Logging Class for both MQL4 and MQL5 - Bibliothek für den MetaTrader 5

Ansichten:
62
Rating:
(7)
Veröffentlicht:
Logging.mq5 (9.08 KB) ansehen
\MQL5\Include\
Logging.mqh (44.87 KB) ansehen
MQL5 Freelance 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 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 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 HiLo

Hoch- und Tiefstwertanzeiger

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

Dieses Skript speichert alle im Diagramm verfügbaren OHLCV-Daten in einer CSV-Datei.