無料でロボットをダウンロードする方法を見る
Telegram上で私たちを見つけてください。
私たちのファンページに参加してください
興味深いスクリプト?
それではリンクにそれを投稿してください。-
他の人にそれを評価してもらいます
記事を気に入りましたか?MetaTrader 5ターミナルの中でそれを試してみてください。
ライブラリ

Logging Class for both MQL4 and MQL5 - MetaTrader 5のためのライブラリ

ビュー:
88
評価:
(7)
パブリッシュ済み:
\MQL5\Include\
Logging.mqh (44.87 KB) ビュー
MQL5フリーランス このコードに基づいたロボットまたはインジケーターが必要なら、フリーランスでご注文ください フリーランスに移動

CDebugLoggerクラス:MQL4/5用の包括的なロギング・ユーティリティ

CDebugLogger クラスは、MQL4/5環境用に特別に設計された強力で柔軟なロギング・ユーティリティです。アプリケーションの動作を正確にモニターし、デバッグし、追跡する必要がある開発者にとって不可欠なツールです。以下では、このクラスの主な特徴と機能を探ります。

主な機能

  • 複数のログレベル: CDebugLoggerクラスは、INFOWARNINGERRORDEBUGなど、異なる重要レベルでのロギングをサポートします。これにより、開発者は特定の重要なメッセージをフィルターし、フォーカスすることができます。
  • タイムスタンプのインクルード: 開発者は、カスタマイズ可能なフォーマットで、ログメッセージにタイムスタンプを含めることができます。この機能は、イベントの正確な時間を追跡し、時間に敏感な問題をデバッグするために重要です。
  • ファイルロギング: このクラスは、ファイルへのロギングを強力にサポートします。開発者は、ファイルへのロギングを有効または無効にし、ログファイルのパスを指定し、ログを共通フォルダに保存するかどうかを選択できます。さらに、ログはCSV形式で保存でき、解析や分析が容易になります。
  • コンテキスト情報: ログメッセージをより明確にするために、CDebugLogger クラスは関数シグネチャ、ファイル名、行番号を含めることができます。このコンテキスト情報は、コード内の問題の正確な位置を特定するのに役立ちます。
  • サイレントキーワード: このクラスのユニークな機能は、特定のキーワードを含むログをサイレントにする機能です。これは特に、パスワードや機密データなどの機密情報がログに記録されるのを防ぐのに役立つ。
  • キーワードのフィルター: この クラスの もう一つのユニークな機能は、特定のキーワードを含むログをフィルターする機能 ある。これは、特定の問題に関連するログのみに焦点を当てることで、デバッグに 特に役立ちます。開発者は、特定の用語を含むメッセージだけを含むようにログ出力を絞り込むことができ、無関係なログエントリに圧倒されることなく、その用語に関連する問題を簡単に特定して 対処することができます。

使用例

以下は、CDebugLogger クラスを初期化して使用する方法の例です:

// ファイルへのINFOレベルのロギングでロガーを初期化する。
CDebugLogger logger(INFO, true, "log.txt", true, TIME_DATE | TIME_MINUTES, false, true, true, true);

// 簡単なメッセージを記録する
logger.Log(INFO, "This is an info message");

// キーワードを黙らせる
logger.AddSilentKeyword("password");

// 黙殺されるメッセージを記録する
logger.Log(INFO, "User entered password: 1234");

// ファイルのロギングを有効にする
logger.EnableFileLogging(true, "debug.log", false);

// サイレンスキーワードを削除する
logger.RemoveSilentKeyword("password");

// サイレンスリストからキーワードを削除した後、メッセージをログに記録する。
logger.Log(INFO, "User entered password: 1234");

// ログをフィルタリングするキーワードを追加する
logger.AddFilterKeyword("success");

// フィルタリングされるメッセージを記録する
logger.Log(INFO, "Operation failed");

// フィルタを通過するメッセージをログに記録する
logger.Log(INFO, "Operation successful");

// フィルタからキーワードを削除する
logger.RemoveFilterKeyword("success");

// 汎用Log関数を使って初期化する。
logging.Initialize(WARNING, true, "warnings.log", true, TIME_SECONDS, true, false, true, true);

// 汎用Log関数を使用して警告をログに記録する。
Log(WARNING, "This is a warning message");

スクリプトの例

スクリプトでCDebugLoggerクラスを利用するには、以下のようにファイルの先頭に必要なライブラリをインクルードするだけです:

//--- このヘッダーファイルは、他のすべてのヘッダーファイルの前にインクルードすることが重要です。
#include <Logging.mqh>  


//+------------------------------------------------------------------+
//| スクリプト・プログラム開始機能|
//+------------------------------------------------------------------+
void OnStart()
{
   //--- INFOレベルでロガーを初期化し、ファイルにログを記録する。
   //--- タイムスタンプを含み、CSV形式で保存する。
   int log_options = 0; // ファイル名|行|funcig;
   logging.Initialize(INFO, true, "example_log.txt", true, TIME_DATE | TIME_MINUTES | TIME_SECONDS, false, log_options, true);

   //--- 簡単な情報メッセージを記録する
   Log(INFO, "Script started successfully.");

   //--- 警告メッセージを記録する
   Log(WARNING, "This is a warning message.");

   //--- エラーメッセージを記録する
   Log(ERROR, "This is an error message.");

   //--- デバッグ・メッセージを記録する
   Log(DEBUG, "This is a debug message for debugging purposes.");

   //--- パスワード」を含むログを消去するキーワードを追加する。
   logging.AddSilentKeyword("password");

   //--- サイレンスキーワードを含むメッセージを記録しようとする。
   Log(INFO, "User entered password: 12348"); // このメッセージは消音される

   //--- サイレンスキーワードを削除する
   logging.RemoveSilentKeyword("password");

   //--- メッセージをもう一度ログに記録する。
   Log(INFO, "User entered password: 1234");

   //--- 汎用Log関数を使用して、メッセージをログに記録する。
   Log(INFO, "This message is logged using the generic Log function.");

   //--- INFOレベルのメッセージをログに記録するには、Printマクロを使用します。
   Print("This message is logged using the Print macro.");

   //--- 異なるオプションの組み合わせによるロギングのデモ
   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.");

   //--- 'important'を含むログをフィルターするキーワードを追加する。
   logging.AddFilterKeyword("important");

   //--- フィルタを実証するために、いくつかのメッセージを記録する
   Log(INFO, "This is an important message."); // このメッセージが表示される
   Log(INFO, "This is a regular message.");    // このメッセージは表示されない

   //--- すべてのログを表示するには、フィルターキーワードを削除する。
   logging.RemoveFilterKeyword("important");

   //--- スクリプトの終了を示す最終メッセージを記録する。
   Log(INFO, "Script execution completed.");
}

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()"

まとめ

CDebugLogger クラスはMQL4/5開発者にとって非常に貴重なツールです。カスタマイズ可能な幅広い機能により、アプリケーションの正確なロギングとモニタリングが可能になり、デバッグが容易になり、アプリケーションのパフォーマンス追跡が向上します。CDebugLoggerクラスは、シンプルなメッセージ・ロギングが必要な場合でも、詳細なコンテキスト情報が必要な場合でも、開発ニーズに合わせた信頼性の高い効率的なソリューションを提供します。

CDebugLoggerクラスの詳細、またはその他の高度なツールやソリューションについては、StormWave Technologiesを ご覧ください。

MetaQuotes Ltdによって英語から翻訳されました。
元のコード: https://www.mql5.com/en/code/51817

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

さまざまな種類の注文(買い、売り、買い待ち、売り待ち)について、原資産に許容される最大ロットサイズを表示するダイアログ。

HedgeCover EA HedgeCover EA

ワンヘッジ・パーポジション・ロジックによるインテリジェントなポジション保護。マジックナンバーセパレーション、クールダウンタイマー、最大ヘッジリミットを搭載。無限のヘッジ・ループを防ぎます。フリーMITライセンス。

HiLo HiLo

高低ラインインジケーター

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

このスクリプトはチャート上で利用可能なすべての OHLCV データを CSV ファイルに保存します。