あなたの "Best Logging Class "という名前を読んで興味を持ちました。"Best "というのはかなり高いレベルなので、気になって調べてみました。フリーで配布されているコードなので、詳細は割愛する。
使い方と特徴
- 隠しキーワードのアイデアは良い。しかし、実装が弱い(下記参照)。また、例えばロギングを使っている場合、サイレント・メッセージが多すぎる。AddSilentKeyword("start")を使うと、"started "や "starting "を使ってログをフィルタリングしてしまう。
- 残りは非常に基本的な機能である。例えば、MQLのコアはイベント・ドリブンであるため、ログ・システムが同じエントリーの繰り返しでログを溢れさせないようにすることは必須です。これは、OnTick()、OnTimer()、またはOnChartEvent()の中にLog()を置くことで簡単に起こります。
コーディングの観点からは :
- コンストラクタとInitialize()は、本質的な部分で重複しています。
- IsMessageSilent()は、m_silent_keywords[]の各単語のループ・チェックを使用しており、このループの中で'keywords'を小文字に変換しています。各ログで!実に非効率的だ。
- 例えば、""ファイル名:" +__FILE__+ "\n"" のログをカスタマイズしたい場合、あなたのコードを修正するか、クラスを派生させてLog()メソッドを完全に書き直す必要があります。例えば、BINファイルを使用する場合など、どのようなカスタム変更が必要であれ、同じ問題があります。
- MQL組み込みのものをオーバーライドするPrint()マクロを定義します。ログのPrint()をライブラリのユーザーに強制するのは、非常に悪い考えです。
結論.
あなたのライブラリは正しい基本的なログ・ライブラリです。初心者や自作する時間がないコーダーにとっては、使いやすいロギング機能を提供できるので便利でしょう。
ところで、「ベスト」という修飾語を使うことは正当化されません。機能は正しいが基本的であり、実装は素人レベルである。
結論.
あなたのライブラリは正しい基本的なログ・ライブラリです。初心者や自作する時間がないコーダーにとっては、使いやすいロギング機能を提供できるので便利でしょう。
ところで、「ベスト」という修飾語を使うことは正当化されません。機能は正しいが基本的であり、実装は素人レベルである。
「ベスト」というのは、あなたの期待に比べると言い過ぎかもしれません。私の意図は、誰でも簡単に修正でき、理解できるコードを共有することでした。しかし、コミュニティへのささやかな貢献ができたこと、そしてこのクラスが誰でも使えるようになったことを願っています。
ご意見ありがとうございました。
2024.09.01 14:51:25.011 Logging (EURUSD,M30) File Name: Logging.mqh Function: string CDebugLogger::FormatLogEntry(LogLevel,string) 2024.09.01 14:51 Line: 276 [INFO] Script started successfully.
ログ呼び出しが発生したファイル名、関数シグネチャ、行番号を出力するには、クラスメソッドの代わりにMACROSを使用する必要があると思います。
結論.
あなたのライブラリは正しい基本的なログ・ライブラリです。初心者や自作する時間がないコーダーにとっては、使いやすいロギング機能を提供できるので便利でしょう。
ところで、「ベスト」という修飾語を使うことは正当化されません。機能は正しいが基本的であり、実装は素人レベルである。
個々の単語を無音にする機能については、スペースや他の文字を含めて単に「start」と書くのが効率的な方法だと思う。結局のところ、他の言語と同様、ログの設定はInit .NETで行うのが理にかなっている。前述したように、誰もが簡単に採用できるようにシンプルである必要があります。もし他に追加する必要があると思うことがあれば、遠慮なく書いてください。印刷」機能については、みなさんが望むなら自由にコメントアウトしてください。
それ以上の変更には対応します!
ご回答ありがとうございます。現在、MQL Plus Enhanced Debugging Supportライブラリを使用してログを印刷しています。しかし、時々大量の繰り返しログが印刷されることがあり、今のところこの問題を解決する方法がありません。ご指摘の解決策は一つの方法ですので、時間があるときに試してみます。ロギングシステムを慎重に設計する必要があります。
- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索
Logging Class for both MQL4 and MQL5:
CDebugLoggerクラスは、MQL4/5環境で使用するために設計された、柔軟で包括的なロギング・ユーティリティです。タイムスタンプ、関数シグネチャ、ファイル名、および行番号をログ・エントリに含めるオプションを使用して、開発者はさまざまな重要度レベル (INFO、WARNING、ERROR、DEBUG) でメッセージをログできます。このクラスは、コンソールとファイルの両方へのロギングをサポートしており、ログを共通のフォルダとCSV形式で保存することができます。さらに、特定のキーワードに基づいてログを消音する機能を提供し、 機密情報がログに記録されないようにします。このクラスは、MQL4/5アプリケーションに堅牢なロギング機構を実装しようとしている開発者にとって理想的であり、デバッグやモニタリングの幅広いニーズに応えるカスタマイズ可能な機能を備えています。
Author: VitalDefender Inc.