La classe CDebugLogger è un'utilità di registrazione potente e flessibile, progettata specificamente per gli ambienti MQL4/5. È uno strumento essenziale per gli sviluppatori che devono monitorare e tracciare il comportamento delle loro applicazioni con precisione. È uno strumento essenziale per gli sviluppatori che hanno bisogno di monitorare, debuggare e tracciare con precisione il comportamento delle loro applicazioni. Di seguito, esploriamo le caratteristiche e le funzionalità principali di questa classe.
Di seguito è riportato un esempio di inizializzazione e utilizzo della classe CDebugLogger:
// Inizializza il logger con la registrazione del livello INFO in un file. CDebugLogger logger(INFO, true, "log.txt", true, TIME_DATE | TIME_MINUTES, false, true, true, true); // Registra un semplice messaggio logger.Log(INFO, "This is an info message"); // Silenziare una parola chiave logger.AddSilentKeyword("password"); // Registra un messaggio che verrà tacitato logger.Log(INFO, "User entered password: 1234"); // Abilita la registrazione dei file logger.EnableFileLogging(true, "debug.log", false); // Rimuovere una parola chiave silenziata logger.RemoveSilentKeyword("password"); // Registra un messaggio dopo aver rimosso la parola chiave dall'elenco del silenzio logger.Log(INFO, "User entered password: 1234"); // Aggiungere una parola chiave per filtrare i log logger.AddFilterKeyword("success"); // Registrare un messaggio che verrà filtrato logger.Log(INFO, "Operation failed"); // Registrare un messaggio che superi il filtro logger.Log(INFO, "Operation successful"); // Rimuovere una parola chiave dal filtro logger.RemoveFilterKeyword("success"); // Inizializza utilizzando la funzione generica Log logging.Initialize(WARNING, true, "warnings.log", true, TIME_SECONDS, true, false, true, true); // Registra un avviso usando la funzione generica Log Log(WARNING, "This is a warning message");
Per utilizzare la classe CDebugLogger in uno script, è sufficiente includere la libreria necessaria all'inizio del file, come mostrato di seguito:
//--- È importante includere questo file header prima di tutti gli altri #include <Logging.mqh> //+------------------------------------------------------------------+ //| Funzione di avvio del programma di script| //+------------------------------------------------------------------+ void OnStart() { //--- Inizializzare il logger con il livello INFO, con registrazione su un file //--- Includere i timestamp e salvare in formato CSV int log_options = 0; // NOME DEL FILE | LINEA | FUNCSIG; logging.Initialize(INFO, true, "example_log.txt", true, TIME_DATE | TIME_MINUTES | TIME_SECONDS, false, log_options, true); //-- Registra un semplice messaggio informativo Log(INFO, "Script started successfully."); //-- Registra un messaggio di avviso Log(WARNING, "This is a warning message."); //--- Registra un messaggio di errore Log(ERROR, "This is an error message."); //-- Registra un messaggio di debug Log(DEBUG, "This is a debug message for debugging purposes."); //--- Aggiungere una parola chiave per silenziare i log contenenti 'password'. logging.AddSilentKeyword("password"); //--- Tentativo di registrare un messaggio contenente la parola chiave silenziato Log(INFO, "User entered password: 12348"); // Questo messaggio verrà tacitato //--- Rimuovere la parola chiave silenziata logging.RemoveSilentKeyword("password"); //--- Registrare di nuovo il messaggio, ora sarà registrato Log(INFO, "User entered password: 1234"); //--- Usare la funzione generica Log per registrare un messaggio Log(INFO, "This message is logged using the generic Log function."); //--- Usare la macro Stampa per registrare un messaggio a livello INFO Print("This message is logged using the Print macro."); //--- Dimostrare la registrazione con diverse combinazioni di opzioni 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."); //--- Aggiungere una parola chiave per filtrare i registri contenenti "importante". logging.AddFilterKeyword("important"); //--- Registra alcuni messaggi per dimostrare il filtro Log(INFO, "This is an important message."); // Questo messaggio sarà visibile Log(INFO, "This is a regular message."); // Questo messaggio non sarà visibile //--- Rimuovere la parola chiave "filtro" per mostrare tutti i log. logging.RemoveFilterKeyword("important"); //--- Registra un messaggio finale che indica la fine dello script Log(INFO, "Script execution completed."); }
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()"
La classe CDebugLogger è uno strumento prezioso per qualsiasi sviluppatore MQL4/5. Con la sua ampia gamma di funzioni personalizzabili, consente di registrare e monitorare con precisione le applicazioni, facilitando il debug e il monitoraggio delle prestazioni. Sia che abbiate bisogno di una semplice registrazione dei messaggi o di informazioni contestuali dettagliate, la classe CDebugLogger fornisce una soluzione affidabile ed efficiente, adatta alle vostre esigenze di sviluppo.
Per ulteriori informazioni sulla classe CDebugLogger o per esplorare altri strumenti e soluzioni avanzate, visitate il sito StormWave Technologies.
Tradotto dall’inglese da MetaQuotes Ltd.
Codice originale https://www.mql5.com/en/code/51817
Max trade volume checker for your trading account
Una finestra di dialogo per visualizzare la dimensione massima del lotto consentita sul sottostante per diversi tipi di ordini (acquisto, vendita, acquisto in attesa e vendita in attesa).
IncAMAOnArray
La classe SAMAOnAgro è destinata al calcolo dei valori degli indicatori AMA (Adaptive Moving Average) da parte dei buffer degli indicatori.
Candele X2MA Transform
L'indicatore trasferisce i dati di prezzo in un nuovo sistema di coordinate, associato ai valori dell'indicatore X2MA.
XTrendlessOS (oscillatore di assenza di tendenze)
L'indicatore è scritto secondo la descrizione fornita nel libro di Joe DiNapoli "Trading Using DiNapoli Levels". L'indicatore è stato progettato per valutare il reale ipercomprato/ipervenduto del mercato.