0

次のような、興味深いエラーが記録された大きなサーバー ログ ファイルのコレクションがあります。

2013-08-14 07:49:00,490 [ajp-8009-5] ERROR com.el.filter.SiteFilter - Caught Top-Level Exception - request=http://www.site2.com/something/home.dept?page=error&buy=123&switchcurrency=EUR
java.lang.NullPointerException
    at com.el.servlet.Helper.checkJData(Helper.java:1205)
    at com.el.servlet.ElServlet.doPost(ElServlet.java:113)

(...)

2013-08-14 08:18:37,984 [ajp-8009-3] ERROR com.el.filter.SiteFilter - Caught Top-Level Exception - request=http://www.site1.com/productId=123456.html
java.lang.NullPointerException
    at com.el.servlet.Helper.checkJData(Helper.java:1205)
    at com.el.servlet.ElServlet.doPost(ElServlet.java:113)

前述したように、これらは非常に大きなファイルであり、あらゆる種類のものによって引き起こされる多くの NullpointerExceptions があります。

これらすべてのファイルから、checkJData メソッドで NPE を引き起こした URL を抽出することに興味があります。「com.el.servlet.Helper.checkJData(Helper.java:1205)」ですべての行を grep できることはわかっていますが、その前の 2 行を取得するにはどうすればよいですか?

Windowsでそれを行うツールはありますか? そうでない場合は、bashスクリプトもいいでしょう。

4

2 に答える 2

1

bash スクリプトの使用:

egrep -B1 "java.lang.NullPointerException" * | grep "request=" | cut -d"=" -f2-

* の代わりに、それらのログ ファイルへのパスを入力します。

于 2013-08-21T14:02:57.443 に答える