目立つステートメントのためにWebアプリケーションのログファイルを調べています。
ほとんどの線は似ていて面白くありません。私はそれらをUnixuniq
に渡しますが、すべての行がわずかに異なるため、何もフィルタリングしません。それらはすべて異なるタイムスタンプを持ち、同様のステートメントは異なるユーザーIDを出力する可能性があります。
他とは著しく異なる線だけを取得する方法やツールは何ですか?(しかし、繰り返しますが、正確な複製ではありません)
私はPythonのdifflibで遊ぶことを考えていましたが、それは同じファイル内のすべての行のペアではなく、2つのファイルを比較することを目的としているようです。
[編集]
私は、このソリューションが各行の一意性スコアを与えると想定しました。つまり、「著しく異なる」とは、出力に含まれる行に対して一意性スコアが超えなければならないしきい値を選択することを意味します。
それに基づいて、それを定義する他の実行可能な方法がある場合は、話し合ってください。また、メソッドは100%の精度と再現率を持っている必要はありません。
[/編集]
例:
できるだけ汎用的な回答を希望します。最初にタイムスタンプを削除できることはわかっています。その言語はファイル内の他のものとはまったく異なる可能性があるため、末尾を削除することはより困難です。このような詳細は、私が以前に具体的な例を避けた理由ですが、一部の人々が尋ねたので...
同様の1:
2009-04-20 00:03:57 INFO com.foo.Bar - URL:/graph?id=1234
2009-04-20 00:04:02 INFO com.foo.Bar - URL:/graph?id=asdfghjk
同様の2:
2009-04-20 00:05:59 INFO com.baz.abc.Accessor - Cache /path/to/some/dir hits: 3466 / 16534, 0.102818% misses
2009-04-20 00:06:00 INFO com.baz.abc.Accessor - Cache /path/to/some/different/dir hits: 4352685 / 271315, 0.004423% misses
異なる1:
2009-04-20 00:03:57 INFO com.foo.Bar - URL:/graph?id=1234
2009-04-20 00:05:59 INFO com.baz.abc.Accessor - Cache /path/to/some/dir hits: 3466 / 16534, 0.102818% misses
別の1のケースでは、両方の行を返したいのですが、それらのような他の行は返したくありません。つまり、これらの2つの線は別個のタイプです(後で、統計的にまれな線タイプのみを要求できます)。一つには、編集距離はこれら2つの間ではるかに大きくなります。