MQL4 和 MQL5 的日志记录 V2 - MetaTrader 5 库
这调试记录器类是一个强大且灵活的日志记录实用程序,专为 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.09。22 13:00:29.589test_logging(欧元美元,H1) 2024.09。22 13:00:29线:43功能:空白 定时器() [信息] 示例消息2024.09。22 13:00:29.589test_logging(欧元美元,H1) 2024.09。22 13:00:29线:44功能:空白 定时器() [INFO] 另一条消息2024.09。22 13:00:29.589test_logging(欧元美元,H1) 2024.09。22 13:00:29线:45功能:空白 定时器() [信息] 示例消息2024.09。22 13:00:29.589test_logging(欧元美元,H1) 2024.09。22 13:00:29线:55功能:空白 定时器() [信息] 计数器值:1 2024.09。22 13:00:29.589test_logging(欧元美元,H1) 2024.09。22 13:00:29线:57功能:空白 定时器() [INFO] 更新后2秒2024.09。22 13:00:29.605test_logging(欧元美元,H1) 2024.09。22 13:00:29线:60功能:空白 定时器() [INFO] 计时器已激活但计数器未更改2024.09。22 13:00:31.001test_logging(欧元美元,H1) 2024.09。22 13:00:31线:55功能:空白 定时器() [信息] 计数器值:2 2024.09。22 13:00:31.001test_logging(欧元美元,H1) 2024.09。22 13:00:31线:57功能:空白 定时器() [INFO] 更新后2秒2024.09。22 13:00:31.017test_logging(欧元美元,H1) 2024.09。22 13:00:31线:60功能:空白 定时器() [INFO] 计时器已激活但计数器未更改2024.09。22 13:00:33.001test_logging(欧元美元,H1) 2024.09。22 13:00:33线:55功能:空白 定时器() [信息] 计数器值:3 2024.09。22 13:00:33.001test_logging(欧元美元,H1) 2024.09。22 13:00:33线:57功能:空白 定时器() [INFO] 更新后2秒2024.09。22 13:00:33.016test_logging(欧元美元,H1) 2024.09。22 13:00:33线: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小时后评论,即可解锁附件下载
立即登录
