Watch how to download trading robots for free
Find us on Twitter!
Join our fan page
Interesting script?
So post a link to it -
let others appraise it
You liked the script? Try it in the MetaTrader 5 terminal
Libraries

Logify - Library for log management - library for MetaTrader 5

Views:
433
Rating:
(1)
Published:
Updated:
\MQL5\Experts\Logify\ \MQL5\Include\Logify\
Logify.mqh (25.24 KB) view
LogifyBuilder.mqh (29.16 KB) view
LogifyLevel.mqh (0.95 KB) view
LogifyModel.mqh (5.86 KB) view
\MQL5\Include\Logify\Utils\ \MQL5\Include\Logify\Suppression\ \MQL5\Include\Logify\Handlers\ \MQL5\Include\Logify\Formatter\ \MQL5\Include\Logify\Error\Languages\ \MQL5\Include\Logify\Error\
Error.mqh (0.55 KB) view
LogifyError.mqh (14.29 KB) view
MQL5 Freelance Need a robot or indicator based on this code? Order it on Freelance Go to Freelance

Logify is a logging library for MQL designed to simplify debugging, tracking, and monitoring of EAs and indicators. It provides structured, customizable, and organized logs directly on the chart or in the terminal, with support for log levels, flexible formats, and multiple handlers. A lightweight, elegant solution that is easy to integrate into your MQL projects.


📦 Features

  • Multiple log levels: DEBUG, INFO, ALERT, ERROR, FATAL
  • Display logs directly on graph, terminal, files or even database
  • Customizable log format and layout
  • Modular architecture with multiple handlers
  • Lightweight and easy to integrate and use


🚀 Installation

  1. Copy the folder /Logify to:
    MQL5/Include/
  2. Include Logify in your EA, indicator or script:
    #include <Logify/Logify.mqh>
  3. It is possible to install using Git, just access the repository and follow the steps.



🔧 Quick Start Example

Simple example with default settings:

//+------------------------------------------------------------------+
//| Import                                                           |
//+------------------------------------------------------------------+
#include <Logify/Logify.mqh>
CLogify Logify;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   //--- Example logs
   Logify.Debug("Initialization started");
   Logify.Info("Account balance is OK");
   Logify.Alert("Take profit reached");
   Logify.Error("Failed to send order", "Order", "Reason: No money");
   Logify.Fatal("Critical error: Invalid input parameters");

   //---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+

Advanced example, with custom handler settings. In this example, we save the log record to files and in the graph comment. Customizing the settings for each of them.

//+------------------------------------------------------------------+
//| Import                                                           |
//+------------------------------------------------------------------+
#include <Logify/Logify.mqh>
CLogify Logify;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   //--- Configure comment handler
   MqlLogifyHandleCommentConfig config_comment;
   config_comment.size = 10;
   config_comment.frame_style = LOG_FRAME_STYLE_SINGLE;
   config_comment.direction = LOG_DIRECTION_UP;
   config_comment.title = "My Expert";

   //--- Create and configure comment handler
   CLogifyHandlerComment *handler_comment = new CLogifyHandlerComment();
   handler_comment.SetConfig(config_comment);
   handler_comment.SetLevel(LOG_LEVEL_DEBUG);
   handler_comment.SetFormatter(new CLogifyFormatter("{date_time} [{levelname}]: {msg}","hh:mm:ss"));
   
   //--- Configure file handler
   MqlLogifyHandleFileConfig file_config;
   file_config.CreateDateRotationConfig("my_expert","logs",LOG_FILE_EXTENSION_LOG,10,100,CP_UTF8);
   
   //--- Create and configure file handler
   CLogifyHandlerFile *handler_file = new CLogifyHandlerFile();
   handler_file.SetConfig(file_config);
   handler_file.SetLevel(LOG_LEVEL_DEBUG);
   handler_file.SetFormatter(new CLogifyFormatter("{date_time} [{levelname}]: {msg} ({filename} | {origin} | {function})","hh:mm:ss"));
   
   //--- Attach handler
   Logify.AddHandler(handler_comment);
   Logify.AddHandler(handler_file);

   //--- Example logs
   Logify.Debug("Initialization started");
   Logify.Info("Account balance is OK");
   Logify.Alert("Take profit reached");
   Logify.Error("Failed to send order", "Order", "Reason: No money");
   Logify.Fatal("Critical error: Invalid input parameters");
   
   //---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+

To understand each of the settings, I recommend reading the articles below, where I explain each step of the library development:


✔️ Log Levels

Level
Description
DEBUG
Verbose information for debug
INFO
General information
ALERT
Warnings or important events
ERROR
Errors that require attention
FATAL
Critical errors, stop execution


🖥️ Handlers Included

Each handler defines where the logs will be displayed or stored.

Handler
Description
Comment
Display logs directly on the graph (Comment)
Console
Show logs in MetaTrader terminal
File
Save logs to .txt or .log files
Database Stores logs in local SQLite database

You can use one or combine several handlers at the same time, like graphic + file + console, for example.


🛠️ Log Format

Example of formatting pattern:

"{date_time} [{levelname}]: {msg}"

Available tokens:

  • {levelname}: Level name (DEBUG, INFO, ERROR, etc.)
  • {msg}: Main message
  • {args}: Additional arguments or details
  • {timestamp}: Timestamp in seconds (Unix Time)
  • {date_time}: Formatted date and time (hh:mm:ss, etc.)
  • {level}: Numeric code for the level (0 = DEBUG, 1 = INFO...)
  • {origin}: Origin or context defined in the log call
  • {filename}: Source file name (if available)
  • {function}: Name of the function from which it was called
  • {line}: Line number in the code where the log occurred


⚖️ License

MIT License — Free to use for personal and commercial projects.


👨‍💻 Author

Developed by joaopedrodev, with a focus on making MQL development more professional, organized and efficient.

Disconnect Alerts for MT5 Disconnect Alerts for MT5

Trade server disconnect alerts utility for MT5.

Copy Trader Copy Trader

Good afternoon guys, I'm a new student on metatrader5, I'm creating a robot to copy trades from a demo account and save them in a database I'd like some help identifying possible problems, best solutions for the code, etc.

Accelerator Oscillator (AC) Accelerator Oscillator (AC)

The Acceleration/Deceleration Indicator (AC) measures acceleration and deceleration of the current driving force.

MACD Signals MACD Signals

Indicator edition for new platform.