[Checkins] SVN: zc.zservertracelog/branches/dev/ Initial stab.

Jim Fulton jim at zope.com
Fri Apr 27 16:07:20 EDT 2007


Log message for revision 74869:
  Initial stab.
  

Changed:
  A   zc.zservertracelog/branches/dev/buildout.cfg
  A   zc.zservertracelog/branches/dev/src/
  A   zc.zservertracelog/branches/dev/src/zc/
  A   zc.zservertracelog/branches/dev/src/zc/__init__.py
  A   zc.zservertracelog/branches/dev/src/zc/zservertracelog/
  A   zc.zservertracelog/branches/dev/src/zc/zservertracelog/__init__.py
  A   zc.zservertracelog/branches/dev/src/zc/zservertracelog/configure.zcml

-=-
Added: zc.zservertracelog/branches/dev/buildout.cfg
===================================================================
--- zc.zservertracelog/branches/dev/buildout.cfg	2007-04-27 19:35:53 UTC (rev 74868)
+++ zc.zservertracelog/branches/dev/buildout.cfg	2007-04-27 20:07:19 UTC (rev 74869)
@@ -0,0 +1,44 @@
+[buildout]
+develop = .
+parts = instance
+
+[zope3]
+recipe = zc.recipe.zope3checkout
+url = svn://svn.zope.org/repos/main/Zope3/tags/3.3.0
+
+[app]
+recipe = zc.zope3recipes:app
+eggs = zc.zservertracelog
+servers = zserver
+site.zcml = <include package="zope.app" />
+            <principal
+                id="zope.manager"
+                title="Manager"
+                login="jim"
+                password_manager="SHA1"
+                password="40bd001563085fc35165329ea1ff5c5ecbdbbeef"
+                />
+            <grant
+                role="zope.Manager"
+                principal="zope.manager"
+                />
+            <includeOverrides package="zc.zservertracelog" />
+
+[instance]
+recipe = zc.zope3recipes:instance
+application = app
+zope.conf =
+   ${database:zconfig}
+
+    <logger>
+       name zc.tracelog
+       propagate false
+
+      <logfile>
+        path ${buildout:directory}/trace.log
+        format %(message)s
+      </logfile>
+    </logger>
+
+[database]
+recipe = zc.recipe.filestorage


Property changes on: zc.zservertracelog/branches/dev/buildout.cfg
___________________________________________________________________
Name: svn:eol-style
   + native

Added: zc.zservertracelog/branches/dev/src/zc/__init__.py
===================================================================
--- zc.zservertracelog/branches/dev/src/zc/__init__.py	2007-04-27 19:35:53 UTC (rev 74868)
+++ zc.zservertracelog/branches/dev/src/zc/__init__.py	2007-04-27 20:07:19 UTC (rev 74869)
@@ -0,0 +1,5 @@
+try:
+    __import__('pkg_resources').declare_namespace(__name__)
+except ImportError:
+    from pkgutil import extend_path
+    __path__ = extend_path(__path__, __name__)


Property changes on: zc.zservertracelog/branches/dev/src/zc/__init__.py
___________________________________________________________________
Name: svn:keywords
   + Id
Name: svn:eol-style
   + native

Added: zc.zservertracelog/branches/dev/src/zc/zservertracelog/__init__.py
===================================================================
--- zc.zservertracelog/branches/dev/src/zc/zservertracelog/__init__.py	2007-04-27 19:35:53 UTC (rev 74868)
+++ zc.zservertracelog/branches/dev/src/zc/zservertracelog/__init__.py	2007-04-27 20:07:19 UTC (rev 74869)
@@ -0,0 +1,92 @@
+##############################################################################
+#
+# Copyright (c) 2005 Zope Corporation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+"""Crude Tracelog Hack for ZServer
+"""
+import datetime, re, logging
+
+from zope.server.http.commonaccesslogger import CommonAccessLogger
+from zope.server.http import wsgihttpserver
+import zope.server.http.httprequestparser
+
+import zope.server.http.httpserverchannel
+from zope.app.server import servertype
+
+from zope.app.wsgi import WSGIPublisherApplication
+
+logger = logging.getLogger('zc.tracelog')
+
+def now():
+    return datetime.datetime.utcnow().replace(microsecond=0).isoformat()
+
+class Parser(zope.server.http.httprequestparser.HTTPRequestParser):
+
+    def __init__(self, x):
+        self._Channel__B = now()
+        zope.server.http.httprequestparser.HTTPRequestParser.__init__(self, x)
+
+class Channel(zope.server.http.httpserverchannel.HTTPServerChannel):
+    parser_class = Parser
+
+    def handle_request(self, parser):
+        logger.info("B %s %s %s %s", id(self), parser.__B,
+                    parser.command, parser.path)
+        logger.info("I %s %s %s", id(self), now(),
+                    parser.content_length)
+        zope.server.http.httpserverchannel.HTTPServerChannel.handle_request(
+            self, parser)
+
+class Server(wsgihttpserver.WSGIHTTPServer):
+
+    channel_class = Channel
+    
+    def executeRequest(self, task):
+        """Overrides HTTPServer.executeRequest()."""
+        logger.info("C %s %s", id(task.channel), now())
+        env = task.getCGIEnvironment()
+        env['wsgi.input'] = task.request_data.getBodyStream()
+
+        def start_response(status, headers):
+            # Prepare the headers for output
+            status, reason = re.match('([0-9]*) (.*)', status).groups()
+            task.setResponseStatus(status, reason)
+            task.appendResponseHeaders(['%s: %s' % i for i in headers])
+
+            # Return the write method used to write the response data.
+            return wsgihttpserver.fakeWrite
+
+        # Call the application to handle the request and write a response
+        response = self.application(env, start_response)
+        length = [h.split(': ')[1].strip()
+                  for h in task.accumulated_headers
+                  if h.lower().startswith('content-length: ')]
+        if length:
+            length = length[0]
+        else:
+            length = '?'
+        logger.info("A %s %s %s %s", id(self), now(),
+                    task.status, length)
+        task.write(response)
+        logger.info("E %s %s", id(self), now())
+
+http = servertype.ServerType(
+    Server,
+    WSGIPublisherApplication,
+    CommonAccessLogger,
+    8080, True)
+
+pmhttp = servertype.ServerType(
+    wsgihttpserver.PMDBWSGIHTTPServer,
+    WSGIPublisherApplication,
+    CommonAccessLogger,
+    8013, True)


Property changes on: zc.zservertracelog/branches/dev/src/zc/zservertracelog/__init__.py
___________________________________________________________________
Name: svn:keywords
   + Id
Name: svn:eol-style
   + native

Added: zc.zservertracelog/branches/dev/src/zc/zservertracelog/configure.zcml
===================================================================
--- zc.zservertracelog/branches/dev/src/zc/zservertracelog/configure.zcml	2007-04-27 19:35:53 UTC (rev 74868)
+++ zc.zservertracelog/branches/dev/src/zc/zservertracelog/configure.zcml	2007-04-27 20:07:19 UTC (rev 74869)
@@ -0,0 +1,15 @@
+<configure xmlns="http://namespaces.zope.org/zope">
+
+  <utility
+      name="WSGI-HTTP"
+      component=".http"
+      provides="zope.app.server.servertype.IServerType"
+      />
+
+  <utility
+      name="WSGI-PostmortemDebuggingHTTP"
+      component=".pmhttp"
+      provides="zope.app.server.servertype.IServerType"
+      />
+
+</configure>


Property changes on: zc.zservertracelog/branches/dev/src/zc/zservertracelog/configure.zcml
___________________________________________________________________
Name: svn:eol-style
   + native



More information about the Checkins mailing list