[Checkins] SVN: zc.zservertracelog/branches/alex-extensions-2/src/zc/zservertracelog/ removed tracelog extension hooks.
Alex Smith
asmith at zope.com
Fri Sep 12 10:43:52 EDT 2008
Log message for revision 91090:
removed tracelog extension hooks.
Changed:
U zc.zservertracelog/branches/alex-extensions-2/src/zc/zservertracelog/README.txt
U zc.zservertracelog/branches/alex-extensions-2/src/zc/zservertracelog/interfaces.py
U zc.zservertracelog/branches/alex-extensions-2/src/zc/zservertracelog/tracelog.py
-=-
Modified: zc.zservertracelog/branches/alex-extensions-2/src/zc/zservertracelog/README.txt
===================================================================
--- zc.zservertracelog/branches/alex-extensions-2/src/zc/zservertracelog/README.txt 2008-09-12 14:20:21 UTC (rev 91089)
+++ zc.zservertracelog/branches/alex-extensions-2/src/zc/zservertracelog/README.txt 2008-09-12 14:43:51 UTC (rev 91090)
@@ -118,155 +118,3 @@
Let's clean up before moving on.
>>> faux_app.app_hook = None
-
-
-Tracelog Extensions
-===================
-
-Additional information can be written to the trace log through the use of
-extensions. Extensions can be registered as named-utilities for any of the
-trace points mentioned above.
-
- >>> import zc.zservertracelog.interfaces
- >>> import zope.component
- >>> import zope.interface
-
- >>> site_manager = zope.component.getSiteManager()
-
-Extensions implement one or more of the sub-interfaces of ``ITracer``. Here,
-we'll define a simple extension that just logs how many times it's been
-called.
-
- >>> class CountTracer(object):
- ...
- ... count = 0
- ...
- ... def __call__(self, logger, trace_point):
- ... self.count += 1
- ... logger.log('count: %s' % self.count)
-
-
- >>> count_tracer = CountTracer()
- >>> site_manager.registerUtility(
- ... count_tracer,
- ... zc.zservertracelog.interfaces.ITraceRequestStart,
- ... '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.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 ?
- E 17954544 2008-09-05T09:47:00
-
-Unnamed extension registrations are not allowed and will result in a
-`ValueError` if present during execution.
-
- >>> site_manager.registerUtility(
- ... count_tracer, zc.zservertracelog.interfaces.ITraceRequestStart)
-
- >>> 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, removing an extension is accomplished simply by unregistering
-it.
-
- >>> site_manager.unregisterUtility(
- ... count_tracer, 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.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 ?
- E 21714736 2008-09-05T13:45:44
-
-So far, we've only added extensions for the *Request Start* trace point, and
-adding extensions for other trace points is done in almost the exact same
-way. The only difference is the interface which an extension is registered
-for.
-
-Here, we'll register the tracer component in the previous examples for the
-other trace points.
-
- >>> site_manager.registerUtility(
- ... count_tracer,
- ... zc.zservertracelog.interfaces.ITraceInputAcquired,
- ... 'example.Tracer')
-
- >>> site_manager.registerUtility(
- ... count_tracer,
- ... zc.zservertracelog.interfaces.ITraceApplicationStart,
- ... 'example.Tracer')
-
- >>> site_manager.registerUtility(
- ... count_tracer,
- ... zc.zservertracelog.interfaces.ITraceApplicationEnd,
- ... 'example.Tracer')
-
- >>> site_manager.registerUtility(
- ... count_tracer,
- ... zc.zservertracelog.interfaces.ITraceRequestEnd,
- ... '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.Tracer count: 4
- I 21930320 2008-09-05T15:53:47 0
- 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.Tracer count: 6
- A 21930320 2008-09-05T15:53:47 200 ?
- 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.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
Modified: zc.zservertracelog/branches/alex-extensions-2/src/zc/zservertracelog/interfaces.py
===================================================================
--- zc.zservertracelog/branches/alex-extensions-2/src/zc/zservertracelog/interfaces.py 2008-09-12 14:20:21 UTC (rev 91089)
+++ zc.zservertracelog/branches/alex-extensions-2/src/zc/zservertracelog/interfaces.py 2008-09-12 14:43:51 UTC (rev 91090)
@@ -23,30 +23,3 @@
def log(msg=None, timestamp=None):
"""Write a message to the trace log."""
-
-
-class ITracer(zope.interface.Interface):
- """Enters trace points."""
-
- def __call__(logger, trace_point):
- """Record an entry in the trace log."""
-
-
-class ITraceRequestStart(ITracer):
- """Enters the *Request Start* trace point."""
-
-
-class ITraceInputAcquired(ITracer):
- """Enters the *Request Input Acquired* trace point."""
-
-
-class ITraceApplicationStart(ITracer):
- """Enters the *Application Start* trace point."""
-
-
-class ITraceApplicationEnd(ITracer):
- """Enters the *Application End* trace point."""
-
-
-class ITraceRequestEnd(ITracer):
- """Enters the *Request End* trace point."""
Modified: zc.zservertracelog/branches/alex-extensions-2/src/zc/zservertracelog/tracelog.py
===================================================================
--- zc.zservertracelog/branches/alex-extensions-2/src/zc/zservertracelog/tracelog.py 2008-09-12 14:20:21 UTC (rev 91089)
+++ zc.zservertracelog/branches/alex-extensions-2/src/zc/zservertracelog/tracelog.py 2008-09-12 14:43:51 UTC (rev 91090)
@@ -26,18 +26,8 @@
import zope.server.http.httprequestparser
import zope.server.http.httpserverchannel
-
-trace_points = {
- 'B': zc.zservertracelog.interfaces.ITraceRequestStart,
- 'I': zc.zservertracelog.interfaces.ITraceInputAcquired,
- 'C': zc.zservertracelog.interfaces.ITraceApplicationStart,
- 'A': zc.zservertracelog.interfaces.ITraceApplicationEnd,
- 'E': zc.zservertracelog.interfaces.ITraceRequestEnd,
- }
-
tracelog = logging.getLogger('zc.tracelog')
-
def _format_datetime(dt):
return dt.replace(microsecond=0).isoformat()
@@ -46,18 +36,9 @@
logger.trace_code = trace_code
logger.extension_id = None
logger.log(msg, timestamp)
- _run_trace_extensions(trace_points[trace_code], logger)
+ logger.trace_code = None
-def _run_trace_extensions(trace_point, logger):
- logger.trace_code = 'X'
- 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)
More information about the Checkins
mailing list