2017-02-22 13 views
0

私はC#コードに基づいた単純なスタンドアロンのロギングアプリケーションを持っており、パラメータを取り込んでログファイルに追加します。C#ログファイルのタイムスロットごとの重複を避ける最良の方法

一部のイベントは、時間のx期間のログ繰り返しイベントを「スキップ」するための最良の方法は何になります

(による再試行する)ログの複数の時間に現れましたか?

私の最初の考えは、イベントのハッシュ(タイムスタンプを除く)とチェックして、ファイルのいくつかの並べ替えを維持することである(イベントは、私は、メモリ内のこのデータを維持することはできませんが起こったときのロギングアプリのみが呼び出されているため)それはリストではありますが、私はかなりのデータを記録しているので、もっと良い方法があるのだろうかと思っていました。私は別のファイルを管理し、ハッシュ関数を実行し、機能性。

+0

説明している機能が、単純なログファイルの仕組みを超えています。 'SQLite'を試して、そこにログを記録してください。 '' log_message ''、 '' log_timestamp''の二重列インデックスは、最後のX分の ''何のエラーメッセージでも "で始まるメッセージを問い合わせる機能を提供します。何も見つからなければ、' INSERT ..... ' – Sharky

答えて

0

ロガーは、実際にはリトライなどのビジネスロジックについて知っていない(または、少なくともそうすべきではない)ため、書き込まれたものを編集してはいけません。

各再試行をログに記録しない場合は、コードのレベルを上に移動して、すべての再試行が失敗した後にのみログに記録します。

あなたが実際にしたいことは

set success flag to false 
loop retries x number of times 
    try action 
    did action succeed? 
     yes: set success flag to true 
      break out of loop 
     no : increment x 
end of while 
is success flag true 
    yes: continue 
    no : log failure 
... logic continues 

差はちょうど外のログを移動することですされたときにこのような何か(擬似コード)

loop retries x number of times 
    try action 
    did action succeed? 
     yes: break out of loop 
     no : increment x 
      log failure 
end of retry loop 
... logic continues 

を持っているように例えば、それが聞こえます再試行ループ。

+0

私はロギングアプリケーションコードを制御するだけで、ロガーを呼び出すアプリケーションのコードを変更することはできません – daveDDD

関連する問題