Home     |     .Net Programming    |     cSharp Home    |     Sql Server Home    |     Javascript / Client Side Development     |     Ajax Programming

Ruby on Rails Development     |     Perl Programming     |     C Programming Language     |     C++ Programming     |     IT Jobs

Python Programming Language     |     Laptop Suggestions?    |     TCL Scripting     |     Fortran Programming     |     Scheme Programming Language


 
 
Cervo Technologies
The Right Source to Outsource

MS Dynamics CRM 3.0

Python Programming Language

get_traceback


Hi,

Is there a function or idoim for returning an exception/traceback
rather than just printing it to stdout?  I'm running a deamon where
stdout is going to /dev/null, and I'm not even watching it..until
now.  All the functions I found in traceback and sys seemed only to
print the error rather than just returning it, so I resorted to this:

def get_traceback():
        import traceback, tempfile
        stdout = sys.stdout

        f = tempfile.TemporaryFile(mode='w+')
        sys.stdout = f

        traceback.print_tb(sys.exc_info()[2])
        error = f.read()
        f.close()

        sys.stdout = stdout
        return error

Whats the right function?!?  Thanks.

~Sean

On Jun 4, 12:23 pm, half.ital@gmail.com wrote:

I use the traceback module as you do and I usually have it email the
traceback to me if there's an error. You could also have the script
redirect stdout to a file object.

Mike

En Mon, 04 Jun 2007 14:23:00 -0300, <half.ital@gmail.com> escribi:

> Is there a function or idoim for returning an exception/traceback
> rather than just printing it to stdout?  I'm running a deamon where
> stdout is going to /dev/null, and I'm not even watching it..until
> now.  All the functions I found in traceback and sys seemed only to
> print the error rather than just returning it, so I resorted to this:

Read again the docs for the traceback module.
Maybe you are looking for traceback.format_exception(*sys.exc_info()) or  
traceback.format_exc()

>    f = tempfile.TemporaryFile(mode='w+')
>    sys.stdout = f
>    traceback.print_tb(sys.exc_info()[2])

In this case you can use StringIO instead of a temporary file, and the  
file argument to print_tb instead of swapping sys.stdout

--
Gabriel Genellina

On Jun 4, 3:51 pm, "Gabriel Genellina" <gagsl-@yahoo.com.ar> wrote:

Thanks Gabriel.  That was exactly what I was looking for.  Also, I'm
glad to make a connection to the StringIO class.  I'm sure I will
remember it the next time I need it.

~Sean

En Mon, 04 Jun 2007 23:03:04 -0300, <half.ital@gmail.com> escribi:

> Thanks Gabriel.  That was exactly what I was looking for.  Also, I'm
> glad to make a connection to the StringIO class.  I'm sure I will
> remember it the next time I need it.

Glad to see it helped. Certainly StringIO is a good thing to carry in your  
toolbox...

--
Gabriel Genellina

Add to del.icio.us | Digg this | Stumble it | Powered by Megasolutions Inc