我一直在尝试跟踪我的应用程序发送的一些HTTP 500。它们在localhost_access_log.txt
中显示为:
127.0.0.1 - - [30/Aug/2017:16:27:46 +0000] "POST /user/174 HTTP/1.1" 500 1
因此,我在应用程序中添加了日志记录,以捕获所有5xx类型的异常和响应。这些日志从不填充。另外,正如您所看到的,响应的长度是一个字节,永远不会这样。我使用的Web框架Lift将返回比5xx更大的响应。
我正试图抓住所有问题:
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)
}
因此,由于没有任何记录在
requestLog
中,所以我想知道它是否还在打我的代码。如何在Tomcat中启用更好的日志记录以查看根本原因?
catalina.out
也没有任何内容。 最佳答案
5xx类型的错误表示服务器上发生意外错误。理想情况下,开发人员应将所有可能的try-catch块放在代码内,以免发生这些5xx错误。同样,请尝试捕获所有类型的错误,而不要在代码中查找特定的5xx错误,否则这些日志将永远不会被记录。