[Checkins] SVN: zc.zservertracelog/branches/alex-tracelog-extensions/src/zc/zservertracelog/ - infer extension id by the utility registration name.

Alex Smith asmith at zope.com
Fri Sep 5 15:00:15 EDT 2008


Log message for revision 90893:
  
  - infer extension id by the utility registration name.
  - disallow unnamed extensions.
  

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

-=-
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 18:55:49 UTC (rev 90892)
+++ zc.zservertracelog/branches/alex-tracelog-extensions/src/zc/zservertracelog/README.txt	2008-09-05 19:00:15 UTC (rev 90893)
@@ -144,7 +144,7 @@
     ...     def __call__(self, logger, trace_point):
     ...         self.count += 1
     ...         logger.log(
-    ...             'count: %s' % self.count, extension_id='counttracer')
+    ...             'count: %s' % self.count)
 
     >>> count_tracer = CountTracer()
     >>> site_manager.registerUtility(
@@ -157,26 +157,35 @@
 
     >>> invokeRequest(req1)
     B 17954544 2008-09-05T09:47:00 GET /test-req1
-    X 17954544 2008-09-05T09:47:00 counttracer count: 1
+    X 17954544 2008-09-05T09:47:00 [example.CountTracer] 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 ?
     E 17954544 2008-09-05T09:47:00
 
+Unnamed extension registrations are not allowed and will result in a
+`ValueError` if present during execution.
 
-Removing an Extension
----------------------
+    >>> site_manager.registerUtility(
+    ...     count_tracer,
+    ...     zc.zservertracelog.interfaces.ITraceRequestStart)
 
-Unregistering the utility removes the extension.
+    >>> invokeRequest(req1)
+    Traceback (most recent call last):
+    ...
+    ValueError: Unnamed Tracelog Extension
 
+To fix the problem, we'll just remove the extension.  Since extensions are
+just utilities, all we have to do is unregister them.
+
     >>> site_manager.unregisterUtility(
     ...     count_tracer,
-    ...     zc.zservertracelog.interfaces.ITraceRequestStart,
-    ...     'example.CountTracer')
+    ...     zc.zservertracelog.interfaces.ITraceRequestStart)
     True
 
     >>> invokeRequest(req1)
     B 21714736 2008-09-05T13:45:44 GET /test-req1
+    X 23418928 2008-08-26T10:55:00 [example.CountTracer] 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 ?

Modified: zc.zservertracelog/branches/alex-tracelog-extensions/src/zc/zservertracelog/interfaces.py
===================================================================
--- zc.zservertracelog/branches/alex-tracelog-extensions/src/zc/zservertracelog/interfaces.py	2008-09-05 18:55:49 UTC (rev 90892)
+++ zc.zservertracelog/branches/alex-tracelog-extensions/src/zc/zservertracelog/interfaces.py	2008-09-05 19:00:15 UTC (rev 90893)
@@ -21,7 +21,7 @@
 class ITraceLog(zope.interface.Interface):
     """Logs records from writers."""
 
-    def log(msg=None, timestamp=None, extension_id=None):
+    def log(msg=None, timestamp=None):
         """Write a message to the trace log."""
 
 

Modified: zc.zservertracelog/branches/alex-tracelog-extensions/src/zc/zservertracelog/tracelog.py
===================================================================
--- zc.zservertracelog/branches/alex-tracelog-extensions/src/zc/zservertracelog/tracelog.py	2008-09-05 18:55:49 UTC (rev 90892)
+++ zc.zservertracelog/branches/alex-tracelog-extensions/src/zc/zservertracelog/tracelog.py	2008-09-05 19:00:15 UTC (rev 90893)
@@ -37,19 +37,23 @@
 def _run_trace_extensions(trace_point, logger):
     tracers = zope.component.getUtilitiesFor(trace_point)
     for tname, tracer in tracers:
+        logger.extension_id = tname
         tracer(logger, trace_point)
+    logger.extension_id = None
 
 
 class TraceLog(object):
     zope.interface.implements(zc.zservertracelog.interfaces.ITraceLog)
 
+    extension_id = None
+
     def __init__(self, channel):
         self.channel_id = id(channel)
 
-    # this implementation adds a `trace_code` option which is meant to be
+    # this implementation adds the `trace_code` option which is meant to be
     # used internally and not for use by extensions.
     def log(
-        self, msg=None, timestamp=None, extension_id=None, trace_code=None):
+        self, msg=None, timestamp=None, trace_code=None):
 
         if timestamp is None:
             timestamp = datetime.datetime.now()
@@ -57,14 +61,14 @@
         if not trace_code:
             trace_code = 'X'
 
-        if trace_code == 'X' and extension_id is None:
-            raise ValueError('extension_id is required')
+        if trace_code == 'X' and not self.extension_id:
+            raise ValueError('Unnamed Tracelog Extension')
 
         entry = '%s %s %s' % (
             trace_code, self.channel_id, _format_datetime(timestamp))
 
-        if extension_id:
-            entry += ' %s' % extension_id
+        if self.extension_id:
+            entry += ' [%s]' % self.extension_id
 
         if msg:
             entry += ' %s' % msg



More information about the Checkins mailing list