Unisciti alla nostra fan page
- Visualizzazioni:
- 48
- Valutazioni:
- Pubblicato:
-
Hai bisogno di un robot o indicatore basato su questo codice? Ordinalo su Freelance Vai a Freelance
Classe CDebugLogger: Un'utilità di registrazione completa per MQL4/5
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.
Caratteristiche principali
- Livelli multipli di log: La classe CDebugLogger supporta la registrazione a diversi livelli di importanza, tra cui INFO, WARNING, ERROR e DEBUG. Ciò consente agli sviluppatori di filtrare e concentrarsi sui messaggi di particolare importanza.
- Inclusione del timestamp: Gli sviluppatori possono scegliere di includere i timestamp nei messaggi di log, con formati personalizzabili. Questa funzione è fondamentale per tracciare l'ora esatta degli eventi e per il debug di problemi sensibili al tempo.
- Registrazione dei file: La classe fornisce un solido supporto per la registrazione su file. Gli sviluppatori possono attivare o disattivare la registrazione su file, specificare il percorso del file di log e scegliere se salvare i log in una cartella comune. Inoltre, i log possono essere salvati in formato CSV, per facilitarne l'analisi.
- Informazioni contestuali: Per migliorare la chiarezza dei messaggi di log, la classe CDebugLogger consente di includere firme di funzioni, nomi di file e numeri di riga. Queste informazioni contestuali aiutano a individuare l'esatta posizione dei problemi all'interno del codice.
- Parole chiave silenziose: Una caratteristica unica di questa classe è la possibilità di silenziare i log che contengono parole chiave specifiche. Ciò è particolarmente utile per evitare che vengano registrate informazioni sensibili, come password o dati riservati.
- Filtro parole chiave: Un'altra caratteristica unica di questa classe è la possibilità di filtrare i registri che contengono parole chiave specifiche. Ciò è particolarmente utile per il debug, concentrandosi solo sui registri che sono rilevanti per problemi specifici. Gli sviluppatori possono restringere l'output dei registri per includere solo i messaggi che contengono determinati termini, rendendo più facile identificare e risolvere i problemi relativi a tali termini senza essere sommersi da voci di registro non correlate.
Esempio di utilizzo
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");
Esempio di script
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."); }
Esempio di output 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()"
Conclusione
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.