[Checkins] SVN: zc.zservertracelog/branches/alex-tracelog-extensions/src/zc/zservertracelog/tracelog.py refactored the logger.
Alex Smith
asmith at zope.com
Mon Sep 8 11:13:27 EDT 2008
Log message for revision 90950:
refactored the logger.
Changed:
U zc.zservertracelog/branches/alex-tracelog-extensions/src/zc/zservertracelog/tracelog.py
-=-
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-08 14:22:44 UTC (rev 90949)
+++ zc.zservertracelog/branches/alex-tracelog-extensions/src/zc/zservertracelog/tracelog.py 2008-09-08 15:13:26 UTC (rev 90950)
@@ -27,6 +27,14 @@
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')
@@ -34,7 +42,15 @@
return dt.replace(microsecond=0).isoformat()
+def _log(logger, trace_code, msg=None, timestamp=None):
+ logger.trace_code = trace_code
+ logger.extension_id = None
+ logger.log(msg, timestamp)
+ _run_trace_extensions(trace_points[trace_code], logger)
+
+
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
@@ -46,26 +62,24 @@
zope.interface.implements(zc.zservertracelog.interfaces.ITraceLog)
extension_id = None
+ trace_code = None
def __init__(self, channel):
self.channel_id = id(channel)
- # 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, trace_code=None):
+ def log(self, msg=None, timestamp=None):
if timestamp is None:
timestamp = datetime.datetime.now()
- if not trace_code:
- trace_code = 'X'
+ if not self.trace_code:
+ self.trace_code = 'X'
- if trace_code == 'X' and not self.extension_id:
+ if self.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))
+ self.trace_code, self.channel_id, _format_datetime(timestamp))
if self.extension_id:
entry += ' %s' % self.extension_id
@@ -88,15 +102,8 @@
def handle_request(self, parser):
logger = TraceLog(self)
- logger.log(
- '%s %s' % (parser.command, parser.path),
- parser.__B,
- trace_code='B')
- _run_trace_extensions(
- zc.zservertracelog.interfaces.ITraceRequestStart, logger)
- logger.log(str(parser.content_length), trace_code='I')
- _run_trace_extensions(
- zc.zservertracelog.interfaces.ITraceInputAcquired, logger)
+ _log(logger, 'B', '%s %s' % (parser.command, parser.path), parser.__B)
+ _log(logger, 'I', str(parser.content_length))
zope.server.http.httpserverchannel.HTTPServerChannel.handle_request(
self, parser)
@@ -112,9 +119,7 @@
def executeRequest(self, task):
"""Overrides HTTPServer.executeRequest()."""
logger = TraceLog(task.channel)
- logger.log(trace_code='C')
- _run_trace_extensions(
- zc.zservertracelog.interfaces.ITraceApplicationStart, logger)
+ _log(logger, 'C')
env = task.getCGIEnvironment()
env['wsgi.input'] = task.request_data.getBodyStream()
@@ -131,12 +136,8 @@
try:
response = self.application(env, start_response)
except Exception, v:
- logger.log('Error: %s' % v, trace_code='A')
- _run_trace_extensions(
- zc.zservertracelog.interfaces.ITraceApplicationEnd, logger)
- logger.log(trace_code='E')
- _run_trace_extensions(
- zc.zservertracelog.interfaces.ITraceRequestEnd, logger)
+ _log(logger, 'A', 'Error: %s' % v)
+ _log(logger, 'E')
raise
else:
accumulated_headers = getattr(task, 'accumulated_headers') or ()
@@ -148,23 +149,15 @@
else:
length = '?'
- logger.log(
- '%s %s' % (getattr(task, 'status', '?'), length),
- trace_code='A')
- _run_trace_extensions(
- zc.zservertracelog.interfaces.ITraceApplicationEnd, logger)
+ _log(logger, 'A', '%s %s' % (getattr(task, 'status', '?'), length))
try:
task.write(response)
except Exception, v:
- logger.log('Error: %s' % v, trace_code='E')
- _run_trace_extensions(
- zc.zservertracelog.interfaces.ITraceRequestEnd, logger)
+ _log(logger, 'E', 'Error: %s' % v)
raise
else:
- logger.log(trace_code='E')
- _run_trace_extensions(
- zc.zservertracelog.interfaces.ITraceRequestEnd, logger)
+ _log(logger, 'E')
http = servertype.ServerType(
More information about the Checkins
mailing list