2011-06-21 9 views
3

私は、テキストログファイルにかなり頻繁に書き込むwpfアプリケーションを持っています(書き込みの間に0.25秒から4秒まで)。 各書き込みは1行の短いテキスト行です。 すべての書き込み後にフラッシュしません。低オーバーヘッドのファイル書き込みプロセスは、それ自身のスレッドでなければなりませんか?

現時点では、これは主UIスレッド上で直接呼び出されます。これは、時間の長さが問題に近づき始めていないことがわかるためです。

..正しい方法はありますか?
自分自身のスレッドでログ処理を行い、非同期イベントを送信してデータを記録する必要がありますか?

答えて

2

NLog、Spring、または多数のロギングプラットフォームのいずれかをご覧ください。あなたのアプリを冷静にし、後でログを記録する最善の方法を心配してください。ロギングの呼び出しはguiメソッドから実行され、実装されているフレームワークを抽象化して必要に応じて異なるスレッドなどに配置する必要があります。

1

ファイル書き込みはファイルシステムキャッシュによってバッファされます。それには、わずかな時間がかかります。毎秒〜10メガバイトの速度で書き込むか、またはキャッシュをいっぱいにしてディスクを待たなければならないように、断片化されたハードドライブが必要です。あなたは長いショットでこれに近づいていません。

1

私はこの書き込み速度では、スレッドからより多くのオーバーヘッド(コンテキスト切り替え、同期化など)が発生しないと思います。

1

UIスレッドでログ処理を続けるのは大したことではありませんが、個人的には別のスレッドにログを書き込むことをお勧めします。メンテナンス性のために、一般的には、要件の変更やバグ追跡のためにログが頻繁に発生する可能性があります。または、Windowsイベントログに変更したい場合があります。

ロギングスレッドを使用する方が良いと思います。

2

Log4Netを試してみることをおすすめしますか?非常にシンプルで軽量で使いやすいパッケージで、このすべてを処理します。

+0

私はLog4Netが一見価値があることに同意します。 –

関連する問題