ich nach einem Weg suchen, um die Antworttext im Play-Rahmen zu drucken, habe ich einen Code wie folgt:Play/Protokollierung/Drucken Antwort Body/enumerator Lauft/puffern den Körper
object AccessLoggingAction extends ActionBuilder[Request] {
def invokeBlock[A](request: Request[A], block: (Request[A]) => Future[Result]) = {
Logger.info(s"""Request:
id=${request.id}
method=${request.method}
uri=${request.uri}
remote-address=${request.remoteAddress}
body=${request.body}
""")
val ret = block(request)
/*
ret.map {result =>
Logger.info(s"""Response:
id=${request.id}
body=${result.body}
""")
}
*/ //TODO: find out how to print result.body (be careful not to consume the enumerator)
ret
}
}
Derzeit ist die Code kommentiert-out funktioniert nicht, wie ich wollte, ich meine, es wäre drucken:
Response:
id=1
[email protected]
Also, ich brauche einen Weg zu finden, einen String aus Enumerator [Array [Byte]] zu erhalten. Ich habe versucht, das Konzept des Enumerator zu begreifen durch das Lese: http://mandubian.com/2012/08/27/understanding-play2-iteratees-for-normal-humans/
So ..., wenn ich es richtig verstehen:
ich soll nicht trocken-up des Enumerator im Prozess der Umwandlung zu Schnur. Andernfalls würde der Client nichts erhalten.
Nehmen wir an, ich finde heraus, wie man den T/Filter-Mechanismus implementiert. Aber dann ... würde es den Zweck des Play-Frameworks nicht als blockierungsfreies Streaming-Framework vereiteln (weil ich das komplette Array von Bytes im Speicher aufbauen würde, bevor ich toString darauf anrufe und es schließlich aufzeichne)?
Also, was ist der richtige Weg, um die Antwort zu protokollieren?
Vielen Dank im Voraus, Raka
Sie sollten die Antwort auf eine Weise protokollieren, die auch streamt. Z.B. 'System.out' ist ein' OutputStream', Sie können sich dort streamingweise anmelden (obwohl Sie möglicherweise zwei verschachtelte Antworten erhalten). Wenn Sie sich bei einer Datenbank anmelden, können Sie dorthin streamen. Und so weiter. – lmm
Ich glaube, ich fand die Antwort hier: http://stackoverflow.com/questions/17752151/scala-play-2-1-accessing-request-and-response-bodies-in-a-filter –