|
|
 |
 |
 |
 |
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:
> 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
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:
> 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
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
|
 |
 |
 |
 |
|