Castrated traceback in sys.exc_info()

Michael Ricordeau michael.ricordeau at gmail.com
Wed Mar 17 12:40:19 CET 2010


Hi,

to log tracebacks, you can probably try traceback module.

I use it like this :

import traceback
.... # your code

for line in traceback.format_exc().splitlines():
  log.trace(line)



Le Wed, 17 Mar 2010 03:42:44 -0700 (PDT),
Pakal <chambon.pascal at gmail.com> a écrit :

> Hello
> 
> I've just realized recently that sys.exc_info() didn't return a full
> traceback for exception concerned : it actually only contains the
> frame below the point of exception catching.
> 
> That's very annoying to me, because I planned to log such tracebacks
> with logging.critical(*****, exc_info=True), and these partial
> tracebacks, like the one below, are clearly unsufficient to determine
> where the problem comes from. A whole traceback, from program entry
> point to exception raising point, would be much better.
> 
> 2010-03-17 09:28:59,184 - pims - CRITICAL - This is just a test to
> ensure critical emails are properly sent
> Traceback (most recent call last):
> << HERE, lots of frames missing >>
>   File "test_common.py", line 34, in test_email_sending
>     os.open("qsdsdqsdsdqsd", "r")
> TypeError: an integer is required
> 
> Is there any workaround for this ? I've thought about a custom logging
> formatter, which would take both the exc_info traceback AND its own
> full backtrace, and to connect them together on their relevant part,
> but it's awkward and error prone... why can't we just have all the
> precious traceback info under the hand there (an additional attribute
> might have pointed the precise frame in which the exception was
> caught).
> 
> Tanks for the attention,
> Regards,
> Pascal



More information about the Python-list mailing list