----- Original Message -----
From: "Vinay Sajip" <vinay_sajip(a)red-dove.com>
Sent: Friday, February 20, 2004 12:25 AM
Subject: Re: logging exceptions
> > Zope 2.7 is using the logging package internally as the implementation
> > for its old zLOG API. We've run into one problem, probably caused by
> > carelessness on our part.
> > zLOG allows you to pass exc_info to be logged, but logging only allows
> > you to specify a flag saying whether the current exception should be
> > logged. (I recall that this was discussed at length, but not why the
> > current solution was reached.) There are several call sites that depend
> > on this feature to capture an exception, try to recover gracefully or
> > log a traceback if recovery is impossible. So we depend on this
> > feature, but can't get it out of logging very easily.
> > We've come up with this as a work-around:
> ["Gross" workaround snipped]
> I propose to make the following change:
> def _log(self, level, msg, args, exc_info=None):
> # ...
> if exc_info:
> if type(exc_info) != types.TupleType:
> exc_info = sys.exc_info()
> record = self.makeRecord(self.name, level, fn, lno, msg, args,
> This should allow passing an exception tuple in the exc_info parameter -
> which case, that's used instead of calling sys.exc_info(). It is a slight
> change to the semantics but I can't think of any (non-pathological) code
> which will break. Can anyone see any problems with this approach?