0

ログから例外を抽出します。その例を次に示します。

例外: System.InvalidOperationException: コレクションが変更されました。列挙操作が実行されない場合があります。System.Collections.Generic.List`1.Enumerator.MoveNextRare() で test.Modules.UI.Table.<>c_ DisplayClass2.b _0 () で System.Win

ログの言語が異なる場合があるため、次のようになります。

Exception: System.InvalidOperationException: La colección fue modificada, la operation de enumeración no puede ejecutar. System.Collections.Generic.List`1.Enumerator.MoveNextRare() で Test.Modules.UI.Table.<>c_ DisplayClass2.b _0 () で System.Win

ご覧のとおり、言語が異なるため例外部分のみが異なりますが、後の部分は同じになります。私はこれらすべての例外をデータベースに保存しています。多くの場合、長さは 300 文字にトリミングされていますが、同じかどうかを判断するには 300 文字で十分です。

だから私はおそらく例外をスキップして次の300文字を比較すると思っていましたが、例外がどこで終了するかを知るのは非常に難しくなり、例外の開始と終了を表示する特定のものはありません.

これを克服する方法はありますか?たぶん、レーベンシュタインを使用して、近い一致がある場所を強調表示し、それらをフィルタリングして、別の言語で書かれた同じ例外を手動で特定したら、例外をリンクできるインターフェイスをセットアップできますか?

私の最終的な目標は、これらのログを何千も見直して、同じ例外がいくつ見つかったかを確認することです。ほとんどのログは英語ですが、おそらく 25% は非英語であるため、通常は完全一致のクエリを実行するだけで済みます例外部分の言語が異なるため、おそらく60〜70%しか一致しません。例外の後の部分が別の例外と一致する場合がまれにあるかもしれませんが、それはまれであるため、あまり気にする必要はありません

PHPでこれを行う必要があります

4

1 に答える 1

0

100% 堅牢ではありませんが、2 番目のセミコロンの前のテキストと、単語に続くテキストの両方に基づいて一致させることができますat。単語のat後に改行が続くに違いないので、単語 + 改行が例外メッセージ自体に表示される可能性はほとんどありません (区切り文字として適切な選択になります)。

あなたが考案したスキームは、例外メッセージを完全に無視したいと思います。言語間で共通の構造を見つけることはできないため、テキスト メッセージをマッチング ランキングの一部にすることは、マッチングの信頼性を低下させるだけです。

于 2012-11-03T16:51:40.790 に答える