2016-12-30 5 views
1

Есть ли простой способ получить журналы доступа к развитию на моей консоли с Play 2.5? Что-то, что я мог прочитать как «GET/foo/123, направленный в действие шоу FooController с id = 123»?Играйте! 2.5 доступ журнала к stdout в разработке

Я нашел, как получить журнал доступа нетти (btw, option play.server.netty.log.wire = true в application.conf почему-то не работает для меня, но -Dplay.server.netty .log.wire = true делает), но он слишком низкоуровневый.

ответ

0

Вы можете создать файл logger.xml в каталоге conf. Он должен следовать формату файла журнала.

, например, конфигурация по умолчанию может выглядеть следующим образом:

<configuration scan="true" scanPeriod="5 seconds"> 
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> 
     <encoder> 
      <pattern>%level %logger{15} - %message%n%xException{5}</pattern> 
     </encoder> 
    </appender> 

    <logger name="play" level="INFO" /> 
    <logger name="application" level="INFO" /> 

    <root level="ERROR"> 
     <appender-ref ref="STDOUT" /> 
    </root> 

</configuration> 

Вы можете включить уровни протоколирования: FATAL, ERROR, WARNING, INFO, DEBUG, TRACE выборочно для любого пакета или по умолчанию на корневой Leve.

Это описан в конфигурации playframework configuring logging

Обратите внимание, что такое поведение было changed in 2.4.x от предыдущих версий, где можно настроить регистратор через application.conf

После регистрации работает вы можете использовать протоколирование образца фильтр provided in the documentation для регистрации всех запросов на ваш сервер.

import javax.inject.Inject 
import akka.stream.Materializer 
import play.api.Logger 
import play.api.mvc._ 
import scala.concurrent.{ExecutionContext, Future} 

class LoggingFilter @Inject() (implicit val mat: Materializer, ec: ExecutionContext) extends Filter { 

    def apply(nextFilter: RequestHeader => Future[Result]) 
      (requestHeader: RequestHeader): Future[Result] = { 

    val startTime = System.currentTimeMillis 

    nextFilter(requestHeader).map { result => 

     val endTime = System.currentTimeMillis 
     val requestTime = endTime - startTime 

     Logger.info(s"${requestHeader.method} ${requestHeader.uri} took ${requestTime}ms and returned ${result.header.status}") 

     result.withHeaders("Request-Time" -> requestTime.toString) 
    } 
    } 
} 

вам придется активировать его, установив play.http.filters:

play.http.filters=com.example.LoggingFilter 
+0

Спасибо Жан! Я пробовал это, но он не дает мне никакой информации о том, как мой запрос маршрутизируется, какой контроллер и действие вызваны и так далее. Например, в приложении RoR я всегда вижу любой запрос на сервер разработки. Но «Игра не дает мне ничего». Даже когда я устанавливаю уровень DEBUG для корневого регистратора, я вижу много информации о загрузке классов, а не о запросах. –

+0

Так выглядит, что нет способа получить его бесплатно. Еще раз спасибо! –