0

現在、ログを分析するためのログビューアを作成しようとしています。各行にタイムスタンプ、ログタイプ、テキストが含まれているログファイルを読んでいます。これから、DateTimeオブジェクト、Type、およびTextを持つオブジェクトを作成します。

タイプは6つのタイプに分けられます:

public enum LogType
{
    DEBUG = 0,
    EVENT,
    ERROR,
    TEST_STEP,
    WARNING,
    SUCCESS
}

指定したログレベルをすばやく追加または削除できるように、各ログレベルの横にチェックボックスがあります。これで、さまざまなログレベルが適切に分散された小さなログファイルで正常に機能するようになりました。しかし、巨大なログファイルがある場合は、ロードに時間がかかり、チェックボックスが変更されるたびにオブジェクトの配列を繰り返して、行ごとに再印刷するため、これは非常に効果的ではありません。

これらのオブジェクトを各行に接続するためのより良い方法はありますか、またはログレベルを簡単に非表示または表示できるようにこれがより適している別のコンポーネントがありますか?

よろしくアンドレアス

4

2 に答える 2

0

私が推奨できるのは、WPF を使用UI virtualizationすることだけです。これにより、ログ内の行を表す大量の要素で UI に負担をかけず、フィルタリングを使用parlallelizationして処理を高速化し、UI の応答性を維持することができます。

于 2013-02-13T13:05:34.310 に答える
0

リアルタイムで更新する必要がないため、ファイル全体を読み取り、同じ基本クラスから継承するさまざまなクラスにさまざまな型を格納できます。たとえば、型ごとに基本クラスLogと派生クラスなどがあります。DebugLog : Logほとんどのフィールドは基本クラスでのみ定義および実装できます。これは、一部のデータを変更する必要なく単純に格納するためです。

これらの派生クラスは、ログ レベルのタイプごとにデータを個別に格納します。そうすれば、リストをクリアし、必要なクラスからデータのみをロードすることで UI を更新できます。すべてのデータを再度繰り返す必要はありません (もちろんフィルターによって異なります)。

ただし、データを正しく表示するには、ある種のソート ハンドラを作成する必要があります。

于 2013-02-14T07:57:10.267 に答える