Mira cómo descargar robots gratis
¡Búscanos en Twitter!
Pon "Me gusta" y sigue las noticias
¿Es interesante este script?
Deje un enlace a él, ¡qué los demás también lo valoren!
¿Le ha gustado el script?
Evalúe su trabajo en el terminal MetaTrader 5
Librerías

Logging Class for both MQL4 and MQL5 - librería para MetaTrader 5

Visualizaciones:
126
Ranking:
(7)
Publicado:
Logging.mq5 (9.08 KB) ver
\MQL5\Include\
Logging.mqh (44.87 KB) ver
MQL5 Freelance ¿Necesita un robot o indicador basado en este código? Solicítelo en la bolsa freelance Pasar a la bolsa

Clase CDebugLogger: Una Utilidad de Registro Completa para MQL4/5

La clase CDebugLogger es una potente y flexible utilidad de registro específicamente diseñada para entornos MQL4/5. Es una herramienta esencial para los desarrolladores que necesitan monitorizar, depurar y rastrear el comportamiento de sus aplicaciones con precisión. A continuación, exploramos las principales características y capacidades de esta clase.

Características principales

  • Múltiples niveles de registro: La clase CDebugLogger soporta el registro en diferentes niveles de importancia, incluyendo INFO, ADVERTENCIA, ERROR y DEBUG. Esto permite a los desarrolladores filtrar y centrarse en mensajes de especial importancia.
  • Inclusión de marcas de tiempo: Los desarrolladores pueden optar por incluir marcas de tiempo en sus mensajes de registro, con formatos personalizables. Esta característica es crucial para el seguimiento de la hora exacta de los eventos y la depuración de problemas sensibles al tiempo.
  • Registro de archivos: La clase proporciona un soporte robusto para el registro en archivos. Los desarrolladores pueden activar o desactivar el registro de archivos, especificar la ruta del archivo de registro y elegir si desean guardar los registros en una carpeta común. Además, los registros pueden guardarse en formato CSV, lo que facilita su análisis.
  • Información contextual: Para mejorar la claridad de los mensajes de registro, la clase CDebugLogger permite la inclusión de firmas de función, nombres de archivo y números de línea. Esta información contextual ayuda a localizar con exactitud los problemas dentro del código.
  • Palabras clave silenciosas: Una característica única de esta clase es la capacidad de silenciar los registros que contienen palabras clave específicas. Esto es especialmente útil para evitar que se registre información sensible, como contraseñas o datos confidenciales.
  • Filtrar palabras clave: Otra característica única de esta clase es la capacidad de filtrar los registros que contienen palabras clave específicas. Esto es particularmente útil para la depuración, centrándose sólo en los registros que son relevantes para problemas específicos. Los desarrolladores pueden reducir la salida de registro para incluir sólo los mensajes que contienen ciertos términos, por lo que es más fácil de identificar y abordar los problemas relacionados con los términos sin ser abrumado por las entradas de registro no relacionados.

Ejemplo de uso

A continuación se muestra un ejemplo de cómo inicializar y utilizar la clase CDebugLogger:

// Inicializar el logger con nivel INFO registrando en un fichero
CDebugLogger logger(INFO, true, "log.txt", true, TIME_DATE | TIME_MINUTES, false, true, true, true);

// Registrar un mensaje simple
logger.Log(INFO, "This is an info message");

// Silenciar una palabra clave
logger.AddSilentKeyword("password");

// Registrar un mensaje que será silenciado
logger.Log(INFO, "User entered password: 1234");

// Activar el registro de archivos
logger.EnableFileLogging(true, "debug.log", false);

// Eliminar una palabra clave silenciada
logger.RemoveSilentKeyword("password");

// Registrar un mensaje después de eliminar la palabra clave de la lista de silencio
logger.Log(INFO, "User entered password: 1234");

// Añadir una palabra clave para filtrar los registros
logger.AddFilterKeyword("success");

// Registrar un mensaje que será filtrado
logger.Log(INFO, "Operation failed");

// Registrar un mensaje que pase el filtro
logger.Log(INFO, "Operation successful");

// Eliminar una palabra clave del filtro
logger.RemoveFilterKeyword("success");

// Inicializar usando la función genérica Log
logging.Initialize(WARNING, true, "warnings.log", true, TIME_SECONDS, true, false, true, true);

// Registrar una advertencia utilizando la función genérica Log
Log(WARNING, "This is a warning message");

Ejemplo de Script

Para utilizar la clase CDebugLogger en un script, simplemente incluya la librería necesaria al principio de su archivo, como se muestra a continuación:

//--- Es importante incluir este fichero de cabecera antes que todos los demás
#include <Logging.mqh>  


//+------------------------------------------------------------------+
//| Función de inicio del programa de script|
//+------------------------------------------------------------------+
void OnStart()
{
   //--- Inicializar el logger con nivel INFO, registrando en un fichero
   //--- Incluir marcas de tiempo y guardar en formato CSV
   int log_options = 0; // NOMBRE DE ARCHIVO | LÍNEA | FUNCSIG;
   logging.Initialize(INFO, true, "example_log.txt", true, TIME_DATE | TIME_MINUTES | TIME_SECONDS, false, log_options, true);

   //--- Registrar un simple mensaje informativo
   Log(INFO, "Script started successfully.");

   //--- Registrar un mensaje de advertencia
   Log(WARNING, "This is a warning message.");

   //--- Registrar un mensaje de error
   Log(ERROR, "This is an error message.");

   //--- Registrar un mensaje de depuración
   Log(DEBUG, "This is a debug message for debugging purposes.");

   //--- Añade una palabra clave para silenciar los registros que contengan 'password'
   logging.AddSilentKeyword("password");

   //--- Intento de registrar un mensaje que contiene la palabra clave silenciado
   Log(INFO, "User entered password: 12348"); // Este mensaje será silenciado

   //--- Eliminar la palabra clave silenciada
   logging.RemoveSilentKeyword("password");

   //--- Registrar el mensaje de nuevo, ahora se registrará
   Log(INFO, "User entered password: 1234");

   //--- Utiliza la función genérica Log para registrar un mensaje
   Log(INFO, "This message is logged using the generic Log function.");

   //--- Utilice la macro Imprimir para registrar un mensaje en el nivel INFO
   Print("This message is logged using the Print macro.");

   //--- Demostrar el registro con diferentes combinaciones de opciones
   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.");

   //--- Añadir una palabra clave para filtrar los registros que contengan 'importante
   logging.AddFilterKeyword("important");

   //--- Registrar algunos mensajes para demostrar el filtro
   Log(INFO, "This is an important message."); // Este mensaje será visible
   Log(INFO, "This is a regular message.");    // Este mensaje no será visible

   //--- Eliminar la palabra clave de filtro para mostrar todos los registros
   logging.RemoveFilterKeyword("important");

   //--- Registra un mensaje final indicando el fin del script
   Log(INFO, "Script execution completed.");
}

Ejemplo de salida 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()"

Conclusión

La clase CDebugLogger es una herramienta invaluable para cualquier desarrollador MQL4/5. Con su amplia gama de características personalizables, permite un registro y monitorización precisos de las aplicaciones, facilitando una depuración más sencilla y un mejor seguimiento del rendimiento de la aplicación. Tanto si necesita un simple registro de mensajes como información contextual detallada, la clase CDebugLogger proporciona una solución fiable y eficiente adaptada a sus necesidades de desarrollo.

Para más información sobre la clase CDebugLogger o para explorar otras herramientas y soluciones avanzadas, visite StormWave Technologies.

Traducción del inglés realizada por MetaQuotes Ltd.
Artículo original: https://www.mql5.com/en/code/51817

Max trade volume checker for your trading account Max trade volume checker for your trading account

Un cuadro de diálogo para mostrar el tamaño máximo de lote permitido en el activo subyacente para diferentes tipos de órdenes (compra, venta, compra pendiente y venta pendiente).

HedgeCover EA HedgeCover EA

Protección de posición inteligente con lógica de una cobertura por posición. Dispone de separación por número mágico, temporizador de enfriamiento y límite máximo de cobertura. Evita bucles de cobertura infinitos. Licencia MIT gratuita.

HiLo HiLo

Indicador de línea alta y baja

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

Este script guarda todos los datos OHLCV disponibles en el gráfico en un archivo CSV.