[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