欢迎访问 外汇EA下载与MT4/MT5自动交易资源 - 聚合外汇EA、黄金EA、量化交易工具与自动化交易实战内容。
登录 注册

MQL4 和 MQL5 的日志记录 V2 - MetaTrader 5 库

author emer | 808 人阅读 | 0 人评论 |

调试记录器类是一个强大且灵活的日志记录实用程序,专为 MQL4/5 环境设计。对于需要精确监控、调试和跟踪应用程序行为的开发人员来说,它是必不可少的工具。

在这个新版本中CDebugLogger 类,我引入了几项改进来增强其功能和多功能性。这些改进包括防反跳机制,以防止 OnTick、OnTimer 和 OnChartEvent 等事件驱动系统中的过多日志记录,以及新的过滤和静音选项,以帮助开发人员专注于最相关的日志条目。

我决定将这个更新版本作为单独的代码库发布,以便用户可以自由选择最适合他们需求的实现。无论您喜欢原始版本还是此增强版本,您现在都可以选择适合您的工作流程和项目要求的日志记录工具。

下面,我们将探讨该增强类的主要特性和功能。

下面是如何初始化和使用 CDebugLogger 类的示例:

// 使用 INFO 级别日志记录到文件来初始化记录器CDebugLogger 记录器(信息,真的,“日志.txt”,真的,TIME_DATE|TIME_MINUTES,错误的,真的,真的,真的);// 记录一条简单的消息记录器.Log(信息,“这是一条信息消息”);// 静音关键字logger.AddSilentKeyword(“密码”);// 记录一条将被静音的消息记录器.日志(信息,“用户输入密码:1234”);// 启用文件日志记录logger.启用文件日志记录(真的,“调试.日志”,错误的);// 删除静音关键字logger.RemoveSilentKeyword(“密码”);// 从静音列表中删除关键字后记录一条消息记录器.Log(信息,“用户输入密码:1234”);// 添加关键字过滤日志logger.AddFilterKeyword(“成功”);// 记录一条将被过滤掉的消息记录器.Log(信息,“操作失败”);// 记录将通过过滤器的消息记录器.日志(信息,“操作成功”);// 从过滤器中删除关键字logger.RemoveFilterKeyword(“成功”);// 使用通用 Log 函数进行初始化日志记录.初始化(警告,真的,“警告.日志”,真的,TIME_SECONDS,真的,错误的,真的,真的);// 使用通用 Log 函数记录警告日志(警告,“这是一条警告消息”);

脚本示例

要在脚本中使用 CDebugLogger 类,只需在文件开头包含必要的库,如下所示:

#包括<日志记录.mqh>//+------------------------------------------------------------------+
//|专家初始化函数                                   |
//+------------------------------------------------------------------+
整数 初始化时()
{  整数日志选项=行| FUNCSIG;// 文件名 |线路 | FUNCSIG;或 0   日志记录.初始化(信息,错误的,“示例_日志.txt”,真的,TIME_DATE|TIME_MINUTES|TIME_SECONDS,错误的, 日志选项,错误的);//--- 创建计时器  事件集毫秒定时器1);//---  返回初始化成功); }//+------------------------------------------------------------------+
//|专家去初始化函数                                 |
//+------------------------------------------------------------------+
空白 解初始化常量 整数原因)
{//--- 销毁计时器  事件终止定时器(); }整数计数器 =0;日期时间最后时间=0;//--- 存储计数器上次更新时间
//+------------------------------------------------------------------+
//|定时器功能                                                   |
//+------------------------------------------------------------------+
空白 定时器()
{  logging.BeginEvent();//--- 开始一个新事件   日志(信息,“消息示例”);
   日志(信息,“另一条消息”);
   日志(信息,“消息示例”);//--- 获取当前时间  日期时间当前时间=时间本地();//--- 检查自上次更新计数器以来是否已经过去了至少 2 秒  如果(当前时间 - 最后时间 >=2)
   {  //--- 更新计数器      计数器++;
      //--- 更新最后一次      最后时间=当前时间;
      //--- 使用新的计数器值记录消息      日志(信息,“计数器值:”+整数转字符串(柜台));
      //--- 您还可以记录另一条消息      日志(信息,“2秒后更新”); }
  别的   {  //--- 记录一条消息,指示计时器处于活动状态,但计数器尚未更改      日志(信息,“计时器已激活但计数器未更改”); } }

输出MT5终端示例:

2024.0922 130029.589test_logging(欧元美元,H1)        2024.0922 130029线:43功能:空白 定时器() [信息] 示例消息2024.0922 130029.589test_logging(欧元美元,H1)        2024.0922 130029线:44功能:空白 定时器() [INFO] 另一条消息2024.0922 130029.589test_logging(欧元美元,H1)        2024.0922 130029线:45功能:空白 定时器() [信息] 示例消息2024.0922 130029.589test_logging(欧元美元,H1)        2024.0922 130029线:55功能:空白 定时器() [信息] 计数器值:1
2024.0922 130029.589test_logging(欧元美元,H1)        2024.0922 130029线:57功能:空白 定时器() [INFO] 更新后22024.0922 130029.605test_logging(欧元美元,H1)        2024.0922 130029线:60功能:空白 定时器() [INFO] 计时器已激活但计数器未更改2024.0922 130031.001test_logging(欧元美元,H1)        2024.0922 130031线:55功能:空白 定时器() [信息] 计数器值:2
2024.0922 130031.001test_logging(欧元美元,H1)        2024.0922 130031线:57功能:空白 定时器() [INFO] 更新后22024.0922 130031.017test_logging(欧元美元,H1)        2024.0922 130031线:60功能:空白 定时器() [INFO] 计时器已激活但计数器未更改2024.0922 130033.001test_logging(欧元美元,H1)        2024.0922 130033线:55功能:空白 定时器() [信息] 计数器值:3
2024.0922 130033.001test_logging(欧元美元,H1)        2024.0922 130033线:57功能:空白 定时器() [INFO] 更新后22024.0922 130033.016test_logging(欧元美元,H1)        2024.0922 130033线:60功能:空白 定时器() [INFO] 计时器已激活但计数器未更改


调试记录器对于任何 MQL4/5 开发人员来说,类都是一个非常宝贵的工具。凭借其广泛的可定制功能,它可以精确记录和监控应用程序,从而促进更轻松的调试和更好的应用程序性能跟踪。无论您需要简单的消息记录还是详细的上下文信息,CDebugLogger 类都可以根据您的开发需求提供可靠且高效的解决方案。

有关 CDebugLogger 类的更多信息或探索其他高级工具和解决方案,请访问暴风科技


附件下载

📎 logging.mqh (52.65 KB)

📎 test_logging.mq5 (6.25 KB)

📎 logging.mq5 (9.08 KB)

Source: MQL5 #52298

🔐
请登录后参与评论
注册满12小时后评论,即可解锁附件下载
立即登录