2016-12-30 73 views
1

標準輸出2.5日誌訪問有沒有簡單的方法來獲得發展的機會登錄我的控制檯上播放2.5? 東西我可以讀作「送到FooController的秀與ID = 123行動GET /富/ 123」?玩!在發展

我發現如何獲得netty訪問日誌(順便說一句,選項play.server.netty.log.wire = true在application.conf由於某種原因對我不起作用,但-Dplay.server.netty .log.wire = true),但它太低級了。

回答

0

您可以創建一個logger.xml文件conf目錄。它應該遵循logback的文件格式。

例如默認配置可能看起來像:

<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,有選擇性地跟蹤任何包裝或根LEVE默認。

這在playframework配置描述configuring logging

注意,這種行爲是從以前的版本中,你可以通過application.conf

配置記錄器一旦你已經記錄工作,你可以使用樣本日誌過濾器changed in 2.4.xprovided 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應用程序,我總是看到開發服務器提出的任何要求。但是Play沒有給我什麼。即使當我爲root logger設置DEBUG級別時,我也會看到很多關於類加載的信息,但沒有關於請求的信息。 –

+0

所以看起來像有沒有辦法得到它是免費的。再次感謝! –