in http-core/src/main/scala/com/twitter/finatra/http/response/EnrichedResponse.scala [700:737]
def failureClassifier(
classifier: => Boolean,
request: Request,
source: String,
details: Seq[Any] = Seq(),
message: String = ""
): EnrichedResponse = {
if (classifier) {
val detailStrings = details.map(_.toString)
warn(s"Request Failure: $source/" + detailStrings.mkString("/") + " " + message)
// generates stats in the form: service/failure/[source]/[details]
val serviceFailureNamespace = Seq("service", "failure")
val serviceFailureScoped = statsReceiver.scope(serviceFailureNamespace: _*)
statsReceiver.counter(serviceFailureNamespace: _*).incr()
serviceFailureScoped.counter(source).incr() // service/failure/AuthService
serviceFailureScoped
.scope(source)
.counter(detailStrings: _*)
.incr() // service/failure/AuthService/3040/Bad_signature
RouteInfo(request) match {
case Some(info) =>
// route/hello/POST/failure/AuthService/3040/Bad_signature
statsReceiver
.scope("route", info.sanitizedPath, request.method.toString(), "failure")
.scope(source)
.counter(detailStrings: _*)
.incr()
case _ =>
// No stored RouteInfo. Note: the com.twitter.finatra.http.exceptions.ExceptionManager
// will always stat failure details for a request.
}
}
this
}