104 lines
3.8 KiB
Scala
104 lines
3.8 KiB
Scala
package com.twitter.recos.user_tweet_entity_graph
|
|
|
|
import com.twitter.finagle.tracing.Trace
|
|
import com.twitter.logging.Logger
|
|
import com.twitter.recos.user_tweet_entity_graph.thriftscala._
|
|
import com.twitter.util.Future
|
|
|
|
trait LoggingUserTweetEntityGraph extends thriftscala.UserTweetEntityGraph.MethodPerEndpoint {
|
|
private[this] val accessLog = Logger("access")
|
|
|
|
abstract override def recommendTweets(
|
|
request: RecommendTweetEntityRequest
|
|
): Future[RecommendTweetEntityResponse] = {
|
|
val time = System.currentTimeMillis
|
|
super.recommendTweets(request) onSuccess { resp =>
|
|
accessLog.info(
|
|
"%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\tRecommendTweetResponse size: %s\t%s in %d ms"
|
|
.format(
|
|
time,
|
|
Trace.id.toString(),
|
|
request.requesterId,
|
|
request.displayLocation,
|
|
request.recommendationTypes,
|
|
request.maxResultsByType,
|
|
request.excludedTweetIds.map(_.take(5)),
|
|
request.excludedTweetIds.map(_.size),
|
|
request.seedsWithWeights.take(5),
|
|
request.seedsWithWeights.size,
|
|
request.maxTweetAgeInMillis,
|
|
request.maxUserSocialProofSize,
|
|
request.maxTweetSocialProofSize,
|
|
request.minUserSocialProofSizes,
|
|
request.tweetTypes,
|
|
request.socialProofTypes,
|
|
request.socialProofTypeUnions,
|
|
resp.recommendations.size,
|
|
resp.recommendations.take(20).toList map {
|
|
case UserTweetEntityRecommendationUnion.TweetRec(tweetRec) =>
|
|
(tweetRec.tweetId, tweetRec.socialProofByType.map { case (k, v) => (k, v.size) })
|
|
case UserTweetEntityRecommendationUnion.HashtagRec(hashtagRec) =>
|
|
(hashtagRec.id, hashtagRec.socialProofByType.map { case (k, v) => (k, v.size) })
|
|
case UserTweetEntityRecommendationUnion.UrlRec(urlRec) =>
|
|
(urlRec.id, urlRec.socialProofByType.map { case (k, v) => (k, v.size) })
|
|
case _ =>
|
|
throw new Exception("Unsupported recommendation types")
|
|
},
|
|
System.currentTimeMillis - time
|
|
)
|
|
)
|
|
} onFailure { exc =>
|
|
accessLog.error(
|
|
"%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s in %d ms".format(
|
|
time,
|
|
Trace.id.toString(),
|
|
request.requesterId,
|
|
request.displayLocation,
|
|
request.recommendationTypes,
|
|
request.maxResultsByType,
|
|
request.excludedTweetIds.map(_.take(5)),
|
|
request.excludedTweetIds.map(_.size),
|
|
request.seedsWithWeights.take(5),
|
|
request.seedsWithWeights.size,
|
|
request.maxTweetAgeInMillis,
|
|
request.maxUserSocialProofSize,
|
|
request.maxTweetSocialProofSize,
|
|
request.minUserSocialProofSizes,
|
|
request.tweetTypes,
|
|
request.socialProofTypes,
|
|
request.socialProofTypeUnions,
|
|
exc,
|
|
System.currentTimeMillis - time
|
|
)
|
|
)
|
|
}
|
|
}
|
|
|
|
abstract override def findTweetSocialProofs(
|
|
request: SocialProofRequest
|
|
): Future[SocialProofResponse] = {
|
|
val time = System.currentTimeMillis
|
|
super.findTweetSocialProofs(request) onSuccess { resp =>
|
|
accessLog.info(
|
|
"%s\t%s\t%d\tResponse: %s\tin %d ms".format(
|
|
Trace.id.toString,
|
|
request.requesterId,
|
|
request.seedsWithWeights.size,
|
|
resp.socialProofResults.toList,
|
|
System.currentTimeMillis - time
|
|
)
|
|
)
|
|
} onFailure { exc =>
|
|
accessLog.info(
|
|
"%s\t%s\t%d\tException: %s\tin %d ms".format(
|
|
Trace.id.toString,
|
|
request.requesterId,
|
|
request.seedsWithWeights.size,
|
|
exc,
|
|
System.currentTimeMillis - time
|
|
)
|
|
)
|
|
}
|
|
}
|
|
}
|