MetaTrader 5 的最简单记录器类 - MetaTrader 5 库


每个程序员都有自己的记录器。受 Python 日志记录模块的启发,我为 MQL5 编写了自己的代码。
这门课最简单。没有层次结构、旋转器或格式化程序。对于任何项目来说,它都是简单且方便的。
#包括乌萨格e
CDKLogger记录器;// 步骤 1. 使用“MyLoggerName”名称和 INFO 级别初始化 Logger记录器.Init(“我的记录器名称”,信息);// 您可以将默认记录器格式“%name%:[%level%] %message%”更改为您自己的 // 使用任意模式组合记录器.Format =“%YYYY%-%MM%-%DD% %hh%:%mm%-%ss% - %name%:[%level%] %message%”;// 步骤 2. 如果您想仅使用子句来过滤消息, // 填充 FilterInList // 2.1.将 substings 添加到 FilterIntListlogger.FilterInList.Add(“包括子字符串#1”); logger.FilterInList.Add(“包括子字符串#2”); // 2.2.用“;”分割字符串分隔符将所有子字符串添加到 FilterInList 中一行logger.FilterInFromStringWithSep(“包括-子字符串-#3;包括-子字符串-#4”,“;”); // 步骤 3. 如果您想用子字符串过滤 OUT 消息,但保留所有其他消息, // 填充 FilterOutList // 3.1.将子字符串添加到 FilterOutListlogger.FilterOutList.Add(“排除-子字符串-#1”); logger.FilterOutList.Add(“排除-子字符串-#2”); // 3.2.用“;”分割字符串分隔符将所有子字符串添加到 FilterOutList 中一行logger.FilterOutFromStringWithSep(“排除-子字符串-#3;排除-子字符串-#4”,“;”); // 使用 Filter 输入你的过滤器 str sep by ;这里 // 步骤 4. 记录记录器.调试(“调试:包括子字符串#1”,错误的); // 没有警报的情况下调试记录器.信息(“信息:包括子字符串#1”,真的); // 带有警报对话框的信息记录器.警告(“警告:包括子字符串#1”); 记录器.错误(“错误:包括子字符串#1:排除子字符串#1”);// 由于 FilterOutList 被跳过记录器.Critical(“严重:包括子字符串#1”); 记录器.断言(真的, “如果为真则记录消息”, 信息, // 如果可以的话 “如果错误则记录消息”, 错误,// 如果失败 真的); // 也显示警报记录器.断言(真的, “真假相同的信息”, 信息, // 如果正常则记录级别 错误, // 如果失败则记录级别 错误的);// 无警报
执行结果将在日志中输出以下消息:
我经常这样使用类:
记录器.调试(字符串格式(“%s/%d:我的消息:PARAM1=%f”, __功能__,__线__, 我的_参数));
但这里我们有一个问题。 StringFormat 函数每次都会解析字符串,即使日志记录级别不要求输出消息。
如果您需要大量输出调试消息,则必须将输出包装在一个条件中:
如果(调试 >= 记录器.级别) 记录器.调试(字符串格式(“%s/%d:我的消息:PARAM1=%f”, __功能__,__线__, 我的_参数));
最好的方法是懒惰地使用 StringFormat,但不幸的是 MQL5 不支持传递动态数量的函数参数调试、信息、错误等功能。
如果您对如何做到这一点有任何想法,我很想听听。
附件下载
📎 cdklogger.mqh (26.27 KB)
📎 cdklogger_example.mq5 (5.73 KB)
Source: MQL5 #52741
