私はアプリケーションから送信されたHTTP 500を追跡しようとしていました。彼らはlocalhost_access_log.txt
にように表示されます。1バイトの応答でHTTP 500を返すTomcat
127.0.0.1 - - [30/Aug/2017:16:27:46 +0000] "POST /user/174 HTTP/1.1" 500 1
だから私はタイプ5xxのすべての例外と応答をキャッチし、自分のアプリケーションへのロギングを追加しました。これらのログには決して入力されません。さらに、あなたが見るように、応答の長さは1バイトです。決してそうであってはいけません。私が使用しているWebフレームワーク、Liftは、5xxの応答よりも大きな応答を返します。
私はそうのようにすべての問題をキャッチしようとしています:それも私のコードを打っかしらrequestLog
に記録されて何もないように
LiftRules.onEndServicing.append {
case (req, Full(resp)) => {
resp.toResponse.code.toString match {
case internalServerError if(internalServerError.startsWith("5")) => requestLogError(req, resp.toString)
case _ =>
}
}
case _ =>
}
LiftRules.exceptionHandler.prepend {
case (runMode, req, exception) =>
requestLogError(req, Throwables.getStackTraceAsString(exception))
XhtmlResponse((<html> <body>Something unexpected happened while serving the page at {req.uri}</body> </html>), S.htmlProperties.docType, List("Content-Type" -> "text/html; charset=utf-8"), Nil, 500, S.legacyIeCompatibilityMode)
}
を。
根本的な原因を調べるためにTomcatでより良いログを有効にするにはどうすればよいですか?
catalina.out
には何もありません。
これはかなり奇妙です。 'localhost_access_log.txt'はTomcatやnginxのようなリバースプロキシによって生成されていますか? –
これは 'org.apache.catalina.valves.AccessLogValve'のログファイルとして定義されているので、Tomcatです。 –
いくつか余分の利点として、 'req.context.setAttribute(" startedLiftProcessing "、true)'を実行する関数を 'LiftRules.early'に与えてみてください。次に、その属性を '%{startedLiftProcessing} r'または'%{startedLiftProcessing} s 'としてログに追加できるはずです。どのTomcatバージョン? –