2013-12-23 3 views
2

В приложении для моей платформы 2 я хотел бы иметь сообщение журнала с запросом, ответом и некоторыми подробностями об ответе - например, количество результатов поиска, возвращаемых с внешнего веб-звонок.Play Framework - Сохранить информацию о текущем запросе

То, что я сейчас фильтр так:

object AccessLog extends Filter { 
    import play.api.mvc._ 
    import play.api.libs.concurrent.Execution.Implicits._ 

    def apply(next: RequestHeader => Future[SimpleResult])(request: RequestHeader): Future[SimpleResult] = { 
    val result = next(request) 
    result map { r => 
     play.Logger.info(s"Request: ${request.uri} - Response: ${r.header.status}") 
    } 
    result 
    } 
} 

В точке каротажа, я alread конвертированы свои классы в JSON, так что кажется расточительным для разбора JSON обратно в объекты, так что я может записывать информацию об этом.

Возможно ли вычислить количество результатов поиска ранее в конвейере запроса, возможно, в словаре и вытащить их, когда я зарегистрирую сообщение здесь?

Я смотрел флеш, но не хочу, чтобы значения отправлялись в файл cookie любой ценой. Возможно, я смогу очистить флеш. Буф, если есть более подходящий способ, я бы хотел это увидеть.

Это часть API только для чтения, которая не включает учетные записи пользователей или сеансы.

ответ

0

Вы можете попытаться использовать play.api.cache.Cacheobject, если вы можете создать воспроизводимый уникальный идентификатор запроса. После того, как вы выполнили свой запрос, его можно удалить с Cache.

+0

Вы считаете, что идентификатор игрового сеанса будет уникальным, учитывая, что это будет только API для чтения без аутентификации пользователя. – user2668128

+0

['Request'] (http://www.playframework.com/documentation/2.2.x/api/scala/index.html#play.api.mvc.Request), похоже, имеет поле« id ». Вы можете попробовать использовать это, но вам нужно будет подтвердить, является ли это уникальным для запроса. Я не уверен. – mantithetical

Смежные вопросы