我正在撰写网络服务,并且经常通过HTTPS发送邮件。
val response = sendJson(JsonUtil.getTextMessageJson("Sorry I don't understand what day you want. You can say " + "things like \"tomorrow\" or \"next Friday\""))
我可以使用onComplete {}跟踪此调用并处理生成的成功或失败,但由于我经常这样做,所以我在辅助类中编写了一个简单的函数:
def logSendResult(response: Future[WSResponse])(implicit userId: String): Unit = {
response onComplete {
case Success(res) => Logger.info("Message to " + userId + " sent successfully with " +
"response code: " + res.status)
case Failure(exception) => Logger.info("Message to " + userId + " failed with " +
"exception: " + exception.getMessage)
}
}
然后我打电话给:
LogUtils.logSendResult(response)
这工作正常,但我想知道是否有更好的方法?
答案 0 :(得分:0)
我相信你有一个跨领域的问题。如果处理不当可能会导致问题:https://en.wikipedia.org/wiki/Cross-cutting_concern
AOP(面向方面编程)可以解决交叉问题'。
以下是在scala中使用AspectJ库的示例AOP程序。 当使用@Loggable注释注释方法并完成执行时,此示例方面将打印方法,其输入和结果详细信息。
希望这有帮助。祝你好运!
答案 1 :(得分:0)
这听起来像是过滤器https://www.playframework.com/documentation/2.5.x/ScalaHttpFilters
的良好应用在示例中,他们甚至显示了构建日志过滤器。