Extracting the traceback

billiejoex gnewsg at gmail.com
Wed Aug 22 07:01:05 EDT 2007


On 22 Ago, 03:11, "Evan Klitzke" <e... at yelp.com> wrote:
> On 8/21/07, codesite-noreply <billiej... at gmail.com> wrote:
>
>
>
>
>
> > On 22 Ago, 02:09, "Evan Klitzke" <e... at yelp.com> wrote:
> > > On 8/21/07, billiejoex <gne... at gmail.com> wrote:
>
> > > > Hi there,
> > > > I'm facing a case where I need to get the traceback outptut when
> > > > occurring an exception.
> > > > I solved such problem by using traceback module in conjunction with
> > > > StringIO:
>
> > > > import StringIO, traceback
> > > > try:
> > > >     raise Exception
> > > > except:
> > > >     f = StringIO.StringIO()
> > > >     traceback.print_exc(file=f)
> > > >     print f.getvalue()
>
> > > > ... but this seems a little poor to me since I first put output into
> > > > the StringIO.StringIO(), then I get it back by using getvalue() on
> > > > it.
> > > > Is there a way to avoid the use of StringIO and get such output
> > > > without using such (useless) additional step?
>
> > > If you just want to print the output (as in your example), you can use
> > > file=sys.stdout or file=sys.stderr in the call to print_exc. If you
> > > want to store the traceback into a string for some other purpose (e.g.
> > > logging, email notifications) I believe that you must use a StringIO
> > > object.
>
> > > --
> > > Evan Klitzke <e... at yelp.com>
>
> > Unfortunately I have to pass the output to a function which prints the
> > passed string both on screen and into a log file.
> > Anyway, not too much important. I'll use StringIO if there's no other
> > solution.
>
> Turns out I was wrong -- you can just get the string, using format_exc
> rather than print_exc.
>
> --
> Evan Klitzke <e... at yelp.com>- Nascondi testo tra virgolette -
>
> - Mostra testo tra virgolette -

Thanks




More information about the Python-list mailing list