folgendes Problem:
Ich will in meinem Programm alle nicht gehandleten Exceptions auf meinen Logger umleiten und danach das Programm beenden.
Bisher habe ich dies mit einem großen try: except gemacht, da dies aber furstbar hässlich ist wollte ich dies nun so umschreiben, dass ich mich an den sys.exepthook zu hängen.
Leider bekomme ich da aber nicht die Exception sondern nur type, value, traceback.
Mache ich nun ein logging.exception(value) habe ich statt einem trace aber nur ein None da stehen.
Ich möchte nun aber die Informationen die ich mit meinem großen try hatte auch hier haben.
Also statt:
Code: Alles auswählen
2012-10-04 23:49:57,535 [ERROR ] integer division or modulo by zero
None
Code: Alles auswählen
2012-10-04 23:49:57,416 [ERROR ] integer division or modulo by zero
Traceback (most recent call last):
File "foo.py", line 70, in <module>
1 / 0
ZeroDivisionError: integer division or modulo by zero
Warum wird sys.excephook nicht einfach die entsprechende exception übergeben und der holt sich dann die Argumente daraus?
Hier mein Code:
Code: Alles auswählen
import logging
try:
1/0
except Exception, e:
logging.exception(e)
Code: Alles auswählen
import logging
import sys
def log_exepthook(type, value, traceback):
value.exc_info = traceback
mainlog.exception(value)
sys.excepthook = log_exepthook
1 / 0
p90