2016-06-30 5 views
1

私はWebサービスを作成しており、しばしばHTTPS経由でメッセージを送信しています。関数を使うよりもScalaで情報を記録する良い方法はありますか?

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) 

もっと良い方法があるのだろうか?

+1

私はPlayを使用しませんが、すばやくGoogle検索するとHttpFiltersのように見えます:https://www.playframework.com/documentation/2.5.x/ScalaHttpFilters –

答えて

0

私はあなたが横断的な懸念を持っていると信じています。 「横断的関心事」を修正することができますhttps://en.wikipedia.org/wiki/Cross-cutting_concern

AOP(アスペクト指向プログラミング):処理されない場合は、適切に問題を引き起こす可能性があります。

ここでは、scalaでAspectJライブラリを使用するサンプルAOPプログラムを示します。 このサンプル・アスペクトは、@Loggableアノテーションで注釈を付けて実行を終了したメソッドを入力すると、Method、その入力と結果の詳細を表示します。

https://github.com/knoldus/CrossCuttingConcern_Scala/blob/master/src/main/scala/com/knoldus/aspect/Aspect.scala

は、このヘルプを願っています。運が良かった!

+0

以前はAOPをロギングに使用しました私はJava/Spring開発をしていました。問題を解決するのに役立つScala言語そのものに本来のものがあることを期待していましたが、あなたが示唆しているように、この問題は実際には横断的なものです。 – Chris

+0

Bro、あなたはupvoteを与えないでしょうか? –

関連する問題