Author: jboynes
Date: Fri Oct 29 12:11:45 2004
New Revision: 55987

Added:
   geronimo/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/requestlog/
   
geronimo/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/requestlog/NCSARequestLog.java
Modified:
   geronimo/trunk/modules/assembly/src/plan/j2ee-server-plan.xml
   
geronimo/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/JettyContainer.java
   
geronimo/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/JettyContainerImpl.java
Log:
add request log for jetty

Modified: geronimo/trunk/modules/assembly/src/plan/j2ee-server-plan.xml
==============================================================================
--- geronimo/trunk/modules/assembly/src/plan/j2ee-server-plan.xml       
(original)
+++ geronimo/trunk/modules/assembly/src/plan/j2ee-server-plan.xml       Fri Oct 
29 12:11:45 2004
@@ -186,7 +186,11 @@
 
 
     <!-- default WAR container using Jetty -->
-    <gbean name="geronimo.server:type=WebContainer,container=Jetty" 
class="org.apache.geronimo.jetty.JettyContainerImpl">
+    <gbean name="geronimo.server:type=WebContainer,container=Jetty" 
class="org.apache.geronimo.jetty.JettyContainerImpl"/>
+    <gbean name="geronimo.server:type=RequestLog,container=Jetty" 
class="org.apache.geronimo.jetty.requestlog.NCSARequestLog">
+        <reference 
name="JettyContainer">geronimo.server:type=WebContainer,container=Jetty</reference>
+        <reference 
name="ServerInfo">geronimo.system:role=ServerInfo</reference>
+        <attribute name="filename">var/log/jetty_yyyy_mm_dd.log</attribute>
     </gbean>
 
     <gbean name="geronimo.server:type=WebConnector,container=Jetty,port=8080" 
class="org.apache.geronimo.jetty.connector.HTTPConnector">

Modified: 
geronimo/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/JettyContainer.java
==============================================================================
--- 
geronimo/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/JettyContainer.java
 (original)
+++ 
geronimo/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/JettyContainer.java
 Fri Oct 29 12:11:45 2004
@@ -20,6 +20,7 @@
 import org.mortbay.http.HttpContext;
 import org.mortbay.http.HttpListener;
 import org.mortbay.http.UserRealm;
+import org.mortbay.http.RequestLog;
 
 /**
  * @version $Rev$ $Date$
@@ -70,4 +71,9 @@
     long getRequestsDurationAve();
 
     long getRequestsDurationMax();
+
+    void setRequestLog(RequestLog log);
+
+    /* ------------------------------------------------------------ */
+    RequestLog getRequestLog();
 }

Modified: 
geronimo/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/JettyContainerImpl.java
==============================================================================
--- 
geronimo/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/JettyContainerImpl.java
     (original)
+++ 
geronimo/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/JettyContainerImpl.java
     Fri Oct 29 12:11:45 2004
@@ -19,6 +19,7 @@
 
 import org.mortbay.http.HttpContext;
 import org.mortbay.http.HttpListener;
+import org.mortbay.http.RequestLog;
 import org.mortbay.http.UserRealm;
 import org.mortbay.jetty.Server;
 
@@ -129,6 +130,15 @@
         server.removeRealm(realm.getName());
     }
 
+    public void setRequestLog(RequestLog log) {
+        server.setRequestLog(log);
+    }
+
+    /* ------------------------------------------------------------ */
+    public RequestLog getRequestLog() {
+        return server.getRequestLog();
+    }
+
     public void doStart() throws WaitingException, Exception {
         server.start();
     }
@@ -168,6 +178,8 @@
         infoFactory.addAttribute("requestsDurationAve", Long.TYPE, false);
         infoFactory.addAttribute("requestsDurationMax", Long.TYPE, false);
         infoFactory.addOperation("resetStatistics");
+
+        infoFactory.addAttribute("requestLog", RequestLog.class, false);
 
         infoFactory.addOperation("addListener", new 
Class[]{HttpListener.class});
         infoFactory.addOperation("removeListener", new 
Class[]{HttpListener.class});

Added: 
geronimo/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/requestlog/NCSARequestLog.java
==============================================================================
--- (empty file)
+++ 
geronimo/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/requestlog/NCSARequestLog.java
      Fri Oct 29 12:11:45 2004
@@ -0,0 +1,155 @@
+/**
+ *
+ * Copyright 2004 The Apache Software Foundation
+ *
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.geronimo.jetty.requestlog;
+
+import org.apache.geronimo.gbean.GBeanInfo;
+import org.apache.geronimo.gbean.GBeanInfoFactory;
+import org.apache.geronimo.gbean.GBeanLifecycle;
+import org.apache.geronimo.gbean.WaitingException;
+import org.apache.geronimo.jetty.JettyContainer;
+import org.apache.geronimo.system.serverinfo.ServerInfo;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class NCSARequestLog implements GBeanLifecycle {
+    private final JettyContainer container;
+    private final ServerInfo serverInfo;
+    private final org.mortbay.http.NCSARequestLog requestLog;
+    private boolean preferProxiedForAddress;
+    private String filename;
+
+    public NCSARequestLog(JettyContainer container, ServerInfo serverInfo) {
+        this.container = container;
+        this.serverInfo = serverInfo;
+        requestLog = new org.mortbay.http.NCSARequestLog();
+    }
+
+    public boolean isBuffered() {
+        return requestLog.isBuffered();
+    }
+
+    public void setBuffered(boolean buffered) {
+        requestLog.setBuffered(buffered);
+    }
+
+    public void setFilename(String filename) {
+        this.filename = filename;
+    }
+
+    public String getFilename() {
+        return filename;
+    }
+
+    public void setLogDateFormat(String format) {
+        requestLog.setLogDateFormat(format);
+    }
+
+    public String getLogDateFormat() {
+        return requestLog.getLogDateFormat();
+    }
+
+    public void setLogTimeZone(String tz) {
+        requestLog.setLogTimeZone(tz);
+    }
+
+    public String getLogTimeZone() {
+        return requestLog.getLogTimeZone();
+    }
+
+    public int getRetainDays() {
+        return requestLog.getRetainDays();
+    }
+
+    public void setRetainDays(int retainDays) {
+        requestLog.setRetainDays(retainDays);
+    }
+
+    public boolean isExtended() {
+        return requestLog.isExtended();
+    }
+
+    public void setExtended(boolean e) {
+        requestLog.setExtended(e);
+    }
+
+    public boolean isAppend() {
+        return requestLog.isAppend();
+    }
+
+    public void setAppend(boolean a) {
+        requestLog.setAppend(a);
+    }
+
+    public void setIgnorePaths(String[] ignorePaths) {
+        requestLog.setIgnorePaths(ignorePaths);
+    }
+
+    public String[] getIgnorePaths() {
+        return requestLog.getIgnorePaths();
+    }
+
+    public void setPreferProxiedForAddress(boolean value) {
+        this.preferProxiedForAddress = value;
+        requestLog.setPreferProxiedForAddress(value);
+    }
+
+    public boolean isPreferProxiedForAddress() {
+        return preferProxiedForAddress;
+    }
+
+    public void doStart() throws WaitingException, Exception {
+        requestLog.setFilename(serverInfo.resolvePath(filename));
+        container.setRequestLog(requestLog);
+        requestLog.start();
+    }
+
+    public void doStop() throws WaitingException, Exception {
+        requestLog.stop();
+        container.setRequestLog(null);
+    }
+
+    public void doFail() {
+        container.setRequestLog(null);
+        requestLog.stop();
+    }
+
+    public static final GBeanInfo GBEAN_INFO;
+
+    static {
+        GBeanInfoFactory infoFactory = new GBeanInfoFactory("NCSA Request 
Log", NCSARequestLog.class);
+        infoFactory.addReference("JettyContainer", JettyContainer.class);
+        infoFactory.addReference("ServerInfo", ServerInfo.class);
+
+        infoFactory.addAttribute("filename", String.class, true);
+        infoFactory.addAttribute("logDateFormat", String.class, true);
+        infoFactory.addAttribute("logTimeZone", String.class, true);
+        infoFactory.addAttribute("retainDays", int.class, true);
+        infoFactory.addAttribute("extended", boolean.class, true);
+        infoFactory.addAttribute("append", boolean.class, true);
+        infoFactory.addAttribute("buffered", boolean.class, true);
+        infoFactory.addAttribute("ingorePaths", String[].class, true);
+        infoFactory.addAttribute("preferProxiedForAddress", boolean.class, 
true);
+
+        infoFactory.setConstructor(new String[]{"JettyContainer", 
"ServerInfo"});
+        GBEAN_INFO = infoFactory.getBeanInfo();
+    }
+
+    public static GBeanInfo getGBeanInfo() {
+        return GBEAN_INFO;
+    }
+}

Reply via email to