2016-08-10 3 views
0

Um Python-Experten:Wie man Logging Formatierer verstehen?

Ich bin neu in der Programmierung und lernen Protokollierung Python-Paket.

Nach Protokollierung Dokument, habe ich das Format meiner Log-Meldung wie folgt:

logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s') 

Hier wird die Ausgabe der Logging-Nachricht ist:

2016-08-09 19:57:08,363 - DEBUG -    A B 
2016-01-31 0 12 
2016-02-29 -1 12 

Wie AB (die Spaltennamen machen (datafram) zur nächsten Zeile ?:

Würden Sie mir bitte auch helfen% (asctime) s -% (levelname) s -% (message) s zu verstehen? Warum% vor Klammer und s nach Klammer setzen?

2016-08-09 19:57:08,363 - DEBUG - 
       A B 
    2016-01-31 0 12 
    2016-02-29 -1 12 

Antwort

1

Für Ihre erste Frage:

einfach eine zusätzliche Newline auf Ihren Anruf von logging.debug hinzufügen:

Zum Beispiel, wenn Ihr Logger logger genannt wird, und Sie die Nachricht über logging.debug(msg) Protokollierung, Sie können logging.debug('\n' + msg aufrufen), um die Nachricht auf die neue Zeile zu verschieben.

Wie für das Format: die % zeigt an, dass der anstehende Text als Formatbezeichner analysiert werden soll. Die Klammern () umgeben den Namen des Spezifizierers und der nachfolgende s wandelt die Eingabedaten in eine Zeichenfolge um. Siehe: difference between str.format and %.

So, %(name)s können Sie name angeben, die in eine Zeichenfolge konvertiert werden. Die verschiedenen Namen asctime, levelname, message werden vom Protokollierungs-Framework angegeben.

+0

Danke. Was ist, wenn meine msg ein DataFrame ist? df = pd.DataFrame ({'A': [0, -1, 3, 5, 4, 2, 1], 'B': [12, 12, 14, 15, 14, 16, 200]}) Protokollierung .debug ('\ n' + df) funktioniert nicht .. @ Rushy Panchal – Lisa

+0

@Lisa Sie können versuchen, 'str (df)' zu verwenden, die es zuerst in eine Zeichenkette umwandelt. Die Darstellung davon wird jedoch vom DataFrame definiert, der möglicherweise nicht Ihren Vorstellungen entspricht. –

Verwandte Themen