Skip to content

Instantly share code, notes, and snippets.

@matterche
Last active July 21, 2016 02:30
Show Gist options
  • Save matterche/a7f6552bd6db0a5591c8 to your computer and use it in GitHub Desktop.
Save matterche/a7f6552bd6db0a5591c8 to your computer and use it in GitHub Desktop.
Simple access log for Play! 2.3.x app
package globals
import play.api.libs.concurrent.Execution.Implicits.defaultContext
import play.api.mvc.{Filter, RequestHeader, Result}
import scala.concurrent.Future
object AccessLog extends Filter {
override def apply(next: RequestHeader ⇒ Future[Result])(request: RequestHeader): Future[Result] = {
val start = System.currentTimeMillis()
val result = next(request)
result.map {
result ⇒
val duration = System.currentTimeMillis() - start
val msg = s"method=${request.method} status=${result.header.status} duration=${duration}ms uri=${request.uri} remote-address=${request.remoteAddress} " +
s"domain=${request.domain} query-string=${request.rawQueryString} referer=${request.headers.get("referer").getOrElse("N/A")}"
// val msg = s"method=${request.method} uri=${request.uri} remote-address=${request.remoteAddress} " +
// s"domain=${request.domain} query-string=${request.rawQueryString} referer=${request.headers.get("referer").getOrElse("N/A")} user-agent=[${request.headers.get("user-agent").getOrElse("N/A")}]"
play.Logger.of("accesslog").info(msg)
}
result
}
}
<appender name="ACCESS_LOG_FILE" class="ch.qos.logback.core.FileAppender">
<file>logs/access.log</file>
<encoder>
<pattern>%date{yyyy-MM-dd HH:mm:ss ZZZZ} %message%n</pattern>
</encoder>
</appender>
<!-- additivity=false ensures access log data only goes to the access log -->
<logger name="accesslog" level="INFO" additivity="false">
<appender-ref ref="ACCESS_LOG_FILE"/>
</logger>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment