2016-06-03 11 views
0

Anzeige Wenn ich den folgenden Code ausführen:Python-Protokollierung Ausnahmen mit Traceback, aber ohne Nachrichten zweimal

import logging 
logger = logging.getLogger('creator') 
try: 
    # some stuff 
except Exception as exception: 
    logger.exception(exception) 

ich die folgende Ausgabe auf dem Bildschirm erhalten:

creator  : ERROR division by zero 
Traceback (most recent call last): 
    File "/graph_creator.py", line 21, in run 
    1/0 
ZeroDivisionError: division by zero 

Gibt es Möglichkeiten, zu erhalten eine solche Ausgabe?

creator  : ERROR ZeroDivisionError: division by zero 
Traceback (most recent call last): 
    File "/graph_creator.py", line 21, in run 
    1/0 

Natürlich kann ich diese (aber ich mag es nicht):

creator  : ERROR Сaught exception (and etc...) 
Traceback (most recent call last): 
    File "/graph_creator.py", line 21, in run 
    1/0 
ZeroDivisionError: division by zero 
+0

Haben Sie Ihren Kommentar gesehen. Sie müssen den benutzerdefinierten 'Formatierer'-Ansatz verwenden. –

Antwort

0

Wenn Sie exception wie folgt aufgerufen:

logger.exception('%s: %s', exception.__class__.__name__, exception) 

dann könnte man bekommen der Name der Ausnahmeklasse in der Anfangszeile.

Wenn Sie genauere Änderungen benötigen, können Sie eine benutzerdefinierte Formatter Unterklasse verwenden, die Dinge genau so formatiert, wie Sie möchten. Dies müsste format_exception überschreiben, um die Formatierung des Tracebacks zu ändern.

+0

und in meiner Log-Datei habe ich 'ZeroDivisionError: Division durch Null' zweimal, über und nach der Rückverfolgung, ich brauche nur oben – Andrei

Verwandte Themen