소스 검색

[spark] Capture access logs

Erick Tryzelaar 11 년 전
부모
커밋
03f22e8

+ 6 - 0
apps/spark/java/livy-repl/pom.xml

@@ -66,6 +66,12 @@
             <version>${project.version}</version>
         </dependency>
 
+        <dependency>
+            <groupId>ch.qos.logback</groupId>
+            <artifactId>logback-access</artifactId>
+            <version>1.1.2</version>
+        </dependency>
+
     </dependencies>
 
     <build>

+ 13 - 0
apps/spark/java/livy-repl/src/main/resources/logback-access.xml

@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration>
+    <!-- always a good activate OnConsoleStatusListener -->
+    <statusListener class="ch.qos.logback.core.status.OnConsoleStatusListener" />
+
+    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder>
+            <pattern>%h %l %u %user %date "%r" %s %b</pattern>
+        </encoder>
+    </appender>
+
+    <appender-ref ref="STDOUT" />
+</configuration>

+ 14 - 2
apps/spark/java/livy-repl/src/main/scala/com/cloudera/hue/livy/repl/WebServer.scala

@@ -2,9 +2,11 @@ package com.cloudera.hue.livy.repl
 
 import javax.servlet.ServletContext
 
+import ch.qos.logback.access.jetty.RequestLogImpl
 import com.cloudera.hue.livy.Logging
 import com.cloudera.hue.livy.repl.interpreter.SparkInterpreter
-import org.eclipse.jetty.server.Server
+import org.eclipse.jetty.server.{NCSARequestLog, Server}
+import org.eclipse.jetty.server.handler.{RequestLogHandler, HandlerCollection}
 import org.eclipse.jetty.servlet.DefaultServlet
 import org.eclipse.jetty.webapp.WebAppContext
 import org.scalatra.servlet.{AsyncSupport, ScalatraListener}
@@ -25,7 +27,17 @@ class WebServer(var port: Int) extends Logging {
 
   context.setAttribute(AsyncSupport.ExecutionContextKey, ExecutionContext.global)
 
-  server.setHandler(context)
+  val handlers = new HandlerCollection
+  handlers.addHandler(context)
+
+  // configure the access log
+  val requestLogHandler = new RequestLogHandler
+  val requestLog = new RequestLogImpl
+  requestLog.setResource("/logback-access.xml")
+  requestLogHandler.setRequestLog(requestLog)
+  handlers.addHandler(requestLogHandler)
+
+  server.setHandler(handlers)
 
   def start() = {
     server.start()