node.js関数を作成してリモートマシンにSSHで接続し、さまざまな異なるログファイルから例外のログを取得しようとしています。ログファイルの重要な部分は次のようになります。
.... gunk ....
2013-01-29 04:06:39,133 com.blahblah.BaseServlet processRequest Thread-1629 Site-102 Cons-0 Url-http://theurlthat.com/caused/the/problem App-26 yada yada yada
java.lang.NullPointerException
at com.blahblah.MyClass.hi(MyClass.java:173)
at com.blahblah.StandardStackTrace.main(StandardStackTrace.java:125)
at com.blahblah.SoOnAndSo.forth(SoOnAndSo.java:109)
at java.lang.Thread.run(Thread.java:595)
2013-01-29 04:06:39,133 com.blahblah.BaseServlet defaultThrowableHandler Thread-1629 Site-102 Cons-0 Url-http://theurlthat.com/caused/the/problem App-26 yad yada yada
TechnicalDifficultiesException: TD page delivered by handleThrowable
http://theurlthat.com/caused/the/problem
....more gunk....
次の3つの要件を満たす例外と対応する日付をログファイルで見つける必要があります。
例外は、この静的テキストの前にある最初のものでなければなりません。
TechnicalDifficultiesException:handleThrowableによって配信されたTDページ
例外は、「BaseServlet。*Site-102」を持つ2つの行の間に直接存在する必要があります
例外は、上記の条件を満たすログファイルの最新(最後)である必要があります。ログは定期的にロールオーバーされるため、Logの最後である必要があります。または、Log.001の最後に存在しない場合、またはLog.002の最後に存在しない場合などです。
このプログラムは多くの潜在的なサーバーの1つにSSHで接続する必要があるため、ログのあるマシンではなく、node.jsプログラムのロジックのみを維持する必要がある方がよいでしょう。したがって、perl / sed / awk / grep/etcのワンライナーが最も理想的です。