[Checkins] SVN: zc.zservertracelog/branches/alex-tracelog-extensions/src/zc/zservertracelog/README.txt added README section on overriding extensions.

Alex Smith asmith at zope.com
Fri Sep 5 16:41:47 EDT 2008


Log message for revision 90907:
  
  added README section on overriding extensions.
  

Changed:
  U   zc.zservertracelog/branches/alex-tracelog-extensions/src/zc/zservertracelog/README.txt

-=-
Modified: zc.zservertracelog/branches/alex-tracelog-extensions/src/zc/zservertracelog/README.txt
===================================================================
--- zc.zservertracelog/branches/alex-tracelog-extensions/src/zc/zservertracelog/README.txt	2008-09-05 19:58:54 UTC (rev 90906)
+++ zc.zservertracelog/branches/alex-tracelog-extensions/src/zc/zservertracelog/README.txt	2008-09-05 20:41:47 UTC (rev 90907)
@@ -150,14 +150,14 @@
     >>> site_manager.registerUtility(
     ...     count_tracer,
     ...     zc.zservertracelog.interfaces.ITraceRequestStart,
-    ...     'example.CountTracer')
+    ...     'example.Tracer')
 
 Extensions appear in the log with the *X* prefix immediately after any trace
 point they are registered for.
 
     >>> invokeRequest(req1)
     B 17954544 2008-09-05T09:47:00 GET /test-req1
-    X 17954544 2008-09-05T09:47:00 example.CountTracer count: 1
+    X 17954544 2008-09-05T09:47:00 example.Tracer count: 1
     I 17954544 2008-09-05T09:47:00 0
     C 17954544 2008-09-05T09:47:00
     A 17954544 2008-09-05T09:47:00 200 ?
@@ -184,7 +184,7 @@
 
     >>> invokeRequest(req1)
     B 21714736 2008-09-05T13:45:44 GET /test-req1
-    X 23418928 2008-08-26T10:55:00 example.CountTracer count: 3
+    X 23418928 2008-08-26T10:55:00 example.Tracer count: 3
     I 21714736 2008-09-05T13:45:44 0
     C 21714736 2008-09-05T13:45:44
     A 21714736 2008-09-05T13:45:44 200 ?
@@ -201,33 +201,72 @@
     >>> site_manager.registerUtility(
     ...     count_tracer,
     ...     zc.zservertracelog.interfaces.ITraceRequestInputAcquired,
-    ...     'example.CountTracer')
+    ...     'example.Tracer')
 
     >>> site_manager.registerUtility(
     ...     count_tracer,
     ...     zc.zservertracelog.interfaces.ITraceApplicationStart,
-    ...     'example.CountTracer')
+    ...     'example.Tracer')
 
     >>> site_manager.registerUtility(
     ...     count_tracer,
     ...     zc.zservertracelog.interfaces.ITraceApplicationEnd,
-    ...     'example.CountTracer')
+    ...     'example.Tracer')
 
     >>> site_manager.registerUtility(
     ...     count_tracer,
     ...     zc.zservertracelog.interfaces.ITraceRequestEnd,
-    ...     'example.CountTracer')
+    ...     'example.Tracer')
 
 Now, that extension is fired at every trace point.
 
     >>> invokeRequest(req1)
     B 21930320 2008-09-05T15:53:47 GET /test-req1
-    X 21930320 2008-09-05T15:53:47 example.CountTracer count: 4
+    X 21930320 2008-09-05T15:53:47 example.Tracer count: 4
     I 21930320 2008-09-05T15:53:47 0
-    X 21930320 2008-09-05T15:53:47 example.CountTracer count: 5
+    X 21930320 2008-09-05T15:53:47 example.Tracer count: 5
     C 21930320 2008-09-05T15:53:47
-    X 21930320 2008-09-05T15:53:47 example.CountTracer count: 6
+    X 21930320 2008-09-05T15:53:47 example.Tracer count: 6
     A 21930320 2008-09-05T15:53:47 200 ?
-    X 21930320 2008-09-05T15:53:47 example.CountTracer count: 7
+    X 21930320 2008-09-05T15:53:47 example.Tracer count: 7
     E 21930320 2008-09-05T15:53:47
-    X 21930320 2008-09-05T15:53:47 example.CountTracer count: 8
+    X 21930320 2008-09-05T15:53:47 example.Tracer count: 8
+
+
+Overriding Extensions
+---------------------
+
+One extension can be overriden with another just by registering the new
+extension with the same name.
+
+Let's add a new extension to demonstrate this.
+
+    >>> class StreetLightTracer(object):
+    ...
+    ...     light = 0
+    ...     colors = ['green', 'yellow', 'red']
+    ...
+    ...     def __call__(self, logger, trace_point):
+    ...         self.light = self.light + 1 % 3
+    ...         logger.log('color: %s' % self.colors[self.light])
+
+    >>> street_light_tracer = StreetLightTracer()
+
+    >>> site_manager.registerUtility(
+    ...     street_light_tracer,
+    ...     zc.zservertracelog.interfaces.ITraceRequestStart,
+    ...     'example.Tracer')
+
+Now, we see output from the new extension.
+
+    >>> invokeRequest(req1)
+    B 23418928 2008-08-26T10:55:00 GET /test-req1
+    X 23418928 2008-08-26T10:55:00 example.Tracer color: yellow
+    I 23418928 2008-08-26T10:55:00 0
+    X 23418928 2008-08-26T10:55:00 example.Tracer count: 9
+    C 23418928 2008-08-26T10:55:00
+    X 23418928 2008-08-26T10:55:00 example.Tracer count: 10
+    A 23418928 2008-08-26T10:55:00 200 ?
+    X 23418928 2008-08-26T10:55:00 example.Tracer count: 11
+    E 23418928 2008-08-26T10:55:00
+    X 23418928 2008-08-26T10:55:00 example.Tracer count: 12



More information about the Checkins mailing list