[Python-Dev] Re: logging exceptions

Vinay Sajip vinay_sajip at red-dove.com
Thu Feb 19 19:25:27 EST 2004


> 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,
exc_info)
         self.handle(record)

This should allow passing an exception tuple in the exc_info parameter - in
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?

Regards,

Vinay




More information about the Python-Dev mailing list