[Checkins] SVN: zc.zkzopeserver/trunk/s Added optional support for zc.zservertracelog.

Jim Fulton jim at zope.com
Wed Jan 18 20:45:40 UTC 2012


Log message for revision 124068:
  Added optional support for zc.zservertracelog.
  

Changed:
  U   zc.zkzopeserver/trunk/setup.py
  U   zc.zkzopeserver/trunk/src/zc/zkzopeserver/README.txt
  U   zc.zkzopeserver/trunk/src/zc/zkzopeserver/__init__.py
  U   zc.zkzopeserver/trunk/src/zc/zkzopeserver/tests.py

-=-
Modified: zc.zkzopeserver/trunk/setup.py
===================================================================
--- zc.zkzopeserver/trunk/setup.py	2012-01-17 20:53:10 UTC (rev 124067)
+++ zc.zkzopeserver/trunk/setup.py	2012-01-18 20:45:39 UTC (rev 124068)
@@ -15,7 +15,8 @@
 
 install_requires = ['setuptools', 'zc.zk', 'zope.server']
 extras_require = dict(
-    test=['zope.testing', 'zc.zk [static,test]', 'zc.monitor']
+    test=['zope.testing', 'zc.zk [static,test]', 'zc.monitor',
+          'zc.zservertracelog']
     )
 
 entry_points = """

Modified: zc.zkzopeserver/trunk/src/zc/zkzopeserver/README.txt
===================================================================
--- zc.zkzopeserver/trunk/src/zc/zkzopeserver/README.txt	2012-01-17 20:53:10 UTC (rev 124067)
+++ zc.zkzopeserver/trunk/src/zc/zkzopeserver/README.txt	2012-01-18 20:45:39 UTC (rev 124068)
@@ -118,6 +118,8 @@
     >>> kw = dict(parser.items('server:main'))
     >>> del kw['use']
 
+    >>> import zope.testing.loggingsupport
+    >>> handler = zope.testing.loggingsupport.InstalledHandler('zc.tracelog')
     >>> @zc.thread.Thread
     ... def server():
     ...     run(wsgiref.simple_server.demo_app, {}, **kw)
@@ -144,6 +146,11 @@
     >>> zk.get_children('/fooservice/providers')
     []
 
+    >>> print handler
+    <BLANKLINE>
+
+    >>> handler.uninstall()
+
 Some notes on the monitor server:
 
 - A monitor server won't be useful unless you've registered some
@@ -152,10 +159,71 @@
 - ``zc.monitor`` isn't a dependency of ``zc.zkzopeserver`` and won't
   be in the Python path unless you install it.
 
+``zc.zservertracslog`` integration
+==================================
 
+The package ``zc.zservertracelog`` extends zope.server to provide
+support for "trace" logs that have multiple log entries per web
+request as a request goes through various stages.
+
+If you want to use ``zc.zservertraeslog`` with ``zc.zkzopeserver``,
+make sure ``zc.zservertracelog`` is in your Python path and include
+the ``zservertracelog`` option in your server section::
+
+
+   [server:main]
+   use = egg:zc.zkzopeserver
+   zookeeper = zookeeper.example.com:2181
+   path = /fooservice/providers
+   monitor_server = 127.0.0.1:0
+   zservertracelog = true
+
+.. -> server_config
+
+    >>> parser = ConfigParser.RawConfigParser()
+    >>> parser.readfp(StringIO.StringIO(server_config))
+    >>> kw = dict(parser.items('server:main'))
+    >>> del kw['use']
+
+    >>> handler = zope.testing.loggingsupport.InstalledHandler('zc.tracelog')
+    >>> @zc.thread.Thread
+    ... def server():
+    ...     run(wsgiref.simple_server.demo_app, {}, **kw)
+
+    >>> zc.zkzopeserver.event_for_testing.wait(1)
+
+    >>> [port] = [int(c.split(':')[1])
+    ...           for c in zk.get_children('/fooservice/providers')]
+    >>> print urllib.urlopen('http://127.0.0.1:%s/' % port).read()
+    ... # doctest: +ELLIPSIS
+    Hello world!
+    ...
+
+    >>> zc.zkzopeserver.stop_for_testing(server)
+
+    >>> print handler
+    zc.tracelog INFO
+      B 4358585232 2012-01-18 15:31:31.050680 GET /
+    zc.tracelog INFO
+      I 4358585232 2012-01-18 15:31:31.050887 0
+    zc.tracelog INFO
+      C 4358585232 2012-01-18 15:31:31.051068
+    zc.tracelog INFO
+      A 4358585232 2012-01-18 15:31:31.051580 200 ?
+    zc.tracelog INFO
+      E 4358585232 2012-01-18 15:31:31.051692
+
+    >>> handler.uninstall()
+
+
 Change History
 ==============
 
+0.2.0 (2012-01-18)
+------------------
+
+Added optional support for using zc.zservertracelog to generate trace logs.
+
 0.1.0 (2011-12-11)
 ------------------
 

Modified: zc.zkzopeserver/trunk/src/zc/zkzopeserver/__init__.py
===================================================================
--- zc.zkzopeserver/trunk/src/zc/zkzopeserver/__init__.py	2012-01-17 20:53:10 UTC (rev 124067)
+++ zc.zkzopeserver/trunk/src/zc/zkzopeserver/__init__.py	2012-01-18 20:45:39 UTC (rev 124068)
@@ -17,7 +17,6 @@
 import zc.zk
 import zope.server.dualmodechannel
 import zope.server.taskthreads
-import zope.server.http.wsgihttpserver
 
 event_for_testing = threading.Event()
 server_for_testing = None
@@ -45,16 +44,20 @@
 def run(wsgi_app, global_conf,
         zookeeper, path, session_timeout=None,
         name=__name__, host='', port=0, threads=1, monitor_server=None,
+        zservertracelog=None,
         ):
     port = int(port)
     threads = int(threads)
 
     task_dispatcher = zope.server.taskthreads.ThreadedTaskDispatcher()
     task_dispatcher.setThreadCount(threads)
-    server = zope.server.http.wsgihttpserver.WSGIHTTPServer(
-        wsgi_app, name, host, port,
-        task_dispatcher=task_dispatcher)
+    if zservertracelog == 'true':
+        from zc.zservertracelog.tracelog import Server
+    else:
+        from zope.server.http.wsgihttpserver import WSGIHTTPServer as Server
 
+    server = Server(wsgi_app, name, host, port, task_dispatcher=task_dispatcher)
+
     props = {}
     if monitor_server:
         host, port = monitor_server.rsplit(':', 1)

Modified: zc.zkzopeserver/trunk/src/zc/zkzopeserver/tests.py
===================================================================
--- zc.zkzopeserver/trunk/src/zc/zkzopeserver/tests.py	2012-01-17 20:53:10 UTC (rev 124067)
+++ zc.zkzopeserver/trunk/src/zc/zkzopeserver/tests.py	2012-01-18 20:45:39 UTC (rev 124068)
@@ -108,6 +108,8 @@
 def test_suite():
     checker = zope.testing.renormalizing.RENormalizing([
         (re.compile('pid = \d+'), 'pid = 9999'),
+        (re.compile(r' \d+ \d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d\.\d+'),
+         ' IIIII DDDD-MM-DD HH:MM:SS.SS'),
         ])
     suite = unittest.TestSuite((
         manuel.testing.TestSuite(



More information about the checkins mailing list