52 lines
1.7 KiB
Scala
52 lines
1.7 KiB
Scala
package com.twitter.recos.user_user_graph
|
|
|
|
import com.twitter.logging.Logger
|
|
import com.twitter.recos.user_user_graph.thriftscala._
|
|
import com.twitter.util.Future
|
|
|
|
trait LoggingUserUserGraph extends thriftscala.UserUserGraph.MethodPerEndpoint {
|
|
private[this] val accessLog = Logger("access")
|
|
|
|
abstract override def recommendUsers(
|
|
request: RecommendUserRequest
|
|
): Future[RecommendUserResponse] = {
|
|
val time = System.currentTimeMillis
|
|
super.recommendUsers(request) onSuccess { resp =>
|
|
val timeTaken = System.currentTimeMillis - time
|
|
val logText =
|
|
s"In ${timeTaken}ms, recommendUsers(${requestToString(request)}), response ${responseToString(resp)}"
|
|
accessLog.info(logText)
|
|
} onFailure { exc =>
|
|
val timeTaken = System.currentTimeMillis - time
|
|
val logText = s"In ${timeTaken}ms, recommendUsers(${requestToString(request)} returned error"
|
|
accessLog.error(exc, logText)
|
|
}
|
|
}
|
|
|
|
private def requestToString(request: RecommendUserRequest): String = {
|
|
Seq(
|
|
request.requesterId,
|
|
request.displayLocation,
|
|
request.seedsWithWeights.size,
|
|
request.seedsWithWeights.take(5),
|
|
request.excludedUserIds.map(_.size).getOrElse(0),
|
|
request.excludedUserIds.map(_.take(5)),
|
|
request.maxNumResults,
|
|
request.maxNumSocialProofs,
|
|
request.minUserPerSocialProof,
|
|
request.socialProofTypes,
|
|
request.maxEdgeEngagementAgeInMillis
|
|
).mkString(",")
|
|
}
|
|
|
|
private def responseToString(response: RecommendUserResponse): String = {
|
|
response.recommendedUsers.toList.map { recUser =>
|
|
val socialProof = recUser.socialProofs.map {
|
|
case (proofType, proofs) =>
|
|
(proofType, proofs)
|
|
}
|
|
(recUser.userId, recUser.score, socialProof)
|
|
}.toString
|
|
}
|
|
}
|