Ausgabeprotokoll im JSON-Format mit Python-Standardprotokollierung

Verwendung der Protokollierung

Zunächst die Grundlagen. Schreiben Sie das Protokoll auf die Bibliotheksseite und Entscheiden Sie, wie das Protokoll auf der Clientseite behandelt werden soll.

Library side

Fügen Sie zunächst die folgenden 4 Zeilen am Anfang jeder Datei hinzu

from logging import getLogger, DEBUG, NullHandler
logger = getLogger(__name__)
logger.addHandler(NullHandler())
logger.setLevel(DEBUG)

Dies wird mit ".debug", ".info" usw. an "logger" ausgegeben.

logger.info("Enter special block")

Da NullHandler registriert ist, wird dieses Protokoll verworfen, wenn der Client es nicht erfasst.

Client side

Der Name des Loggers auf der Bibliotheksseite wird mit __name__ registriert. Beispielsweise wird es mit Namen wie "mod.mod" und "modmod2" registriert. Da es mit "." Überlagert ist, können Sie die Protokolle beider Submodule empfangen, indem Sie mit "mod" darauf verweisen. Wenn kein Name angegeben wird, werden alle Protokolle gesammelt.

import logging
logger = logging.getLogger()
logger.addHandler(logging.StreamHandler())
logger.setLevel(logging.DEBUG)

--Geben Sie das Protokoll über INFO des Mods mod in eine Datei ( mod.log) ein.

import logging
logger = logging.getLogger("mod")
logger.addHandler(logging.FileHandler("mod.log", mode="w"))
logger.setLevel(logging.INFO)

Natürlich ist es möglich, eine Funktion auf der Bibliotheksseite vorzubereiten, die es dem Client erleichtert, diese Codes auszuführen.

Ausgabe in JSON

In Anbetracht der nachfolgenden Analyse möchte ich ein strukturiertes Protokoll. Tatsächlich können Sie ein Wörterbuchobjekt wie "logger.info" angeben:

logger.info({
  "key": value,
  "homhom": 0,
})

Wenn Sie es nicht besonders festlegen, wird das Ergebnis des "Druckens" normalerweise ausgegeben, sodass es genauso aussieht wie JSON, aber Es ist kein formeller JSON, daher ist es schwierig, ihn zu analysieren. Hier kommt python jsonlogger ins Spiel. Dies wird bei der Ausgabe auf der Clientseite als JSON neu formatiert.

So geben Sie in die obige Datei aus:

import logging
from pythonjsonlogger import jsonlogger
h = logging.FileHandler("mod.log", mode="w")
h.setFormatter(jsonlogger.JsonFormatter())
logging.getLogger("mod").addHandler(h)

Dadurch wird für jede Zeile ein gültiges JSON-Protokoll ausgegeben. Also loggen Sie sich ein

with open("mod.log") as f:
    df = pd.DataFrame([json.loads(l) for l in f])

Es kann leicht in Pandas wie gegossen werden.

Recommended Posts

Ausgabeprotokoll im JSON-Format mit Python-Standardprotokollierung
Einfaches Formatieren von JSON mit Python
Formatieren Sie json mit Vim (mit Python)
Holen Sie sich die Standardausgabe in Echtzeit mit dem Python-Unterprozess
Lesen Sie die json-Datei mit Python, formatieren Sie sie und geben Sie json aus
Machen Sie die Standardausgabe in Python nicht blockierend
Unit Test Log Ausgabe mit Python
Python-Protokollierungsstandardbibliothek für die Dateiausgabe nach Protokollebene
Einfach mit nur Python! Geben Sie Graphviz-Zahlen im draw.io-Format aus!
Versuchen Sie, sich mit Python bei qiita anzumelden
Dateneingabe / -ausgabe in Python (CSV, JSON)
Python-Protokoll mit GAE an die Konsole ausgeben
Best Practice für die Anmeldung im JSON-Format unter AWS Lambda / Python
UnicodeEncodeError hat Probleme mit der Standardausgabe von Python3
Format in Python
[python3] Implementieren Sie die Debug-Protokollausgabefunktion einfach mit Protokollierung und Klicken
Lesen Sie JSON mit Python und geben Sie CSV aus
Python-Protokoll wird nicht mit Docker-Compose ausgegeben
Melden Sie sich mit Selenium Python bei Yahoo Business an
So geben Sie "Ketsumaimo" standardmäßig in Python aus
[CentOS8] So geben Sie die Standard-Python-Ausgabe in das Systemd-Protokoll aus
[Python] Verwenden Sie JSON mit Python
Bildformat in Python
Japanische Ausgabe mit Python
Mit Python psycopg2 erhalten Sie Ergebnisse im Diktatformat
Hübscher Druck json oder yaml mit Farbe in Python
Konvertieren / Zurückgeben von Klassenobjekten in das JSON-Format in Python
Finden Sie das Datum dieser Woche in einem beliebigen Format mit Python
Japanische Ausgabe beim Umgang mit Python im Visual Studio
Schaben mit Selen in Python
Schaben mit Chromedriver in Python
POST json mit Python 3-Skript
Debuggen mit pdb in Python
Probieren Sie die Python-Ausgabe mit Haxe 3.2 aus
Testen Sie die Standardausgabe mit Pytest
Umgang mit Sounds in Python
Scraping mit Selen in Python
Scraping mit Tor in Python
Transmutationsmatrix im Python-Standard
Tweet mit Bild in Python
Kombiniert mit Ordnungszahl in Python
String-Format mit Python% -Operator
Lesen Sie die Fortran-Ausgabe mit Python
Lesen von JSON-Daten mit Python
So geben Sie ein Dokument im PDF-Format mit Sphinx aus
Ändern Sie das Standardausgabeziel in eine Datei in Python
[Für Anfänger] Zusammenfassung der Standardeingabe in Python (mit Erklärung)
[Selenium] Ändern Sie das Protokollausgabeziel, wenn Sie Phantomjs mit Python3 ausführen
[GCP] Ausgeben von Cloud-Funktionsprotokollen an Cloud Logging (Stackdriver Logging) (Python)
So melden Sie sich mit Python bei AtCoder an und senden automatisch
Zahlenerkennung in Bildern mit Python
Konvertieren Sie in eine Zeichenfolge, während Sie die Standardausgabe mit dem Python-Unterprozess ausgeben
Exportieren Sie DB-Daten im JSON-Format
Wie man Japanern nicht entgeht, wenn man mit json in Python umgeht
Testen mit Zufallszahlen in Python
Matrixdarstellung mit Python-Standardeingabe
Ausgabe 2017 Premium Friday List in Python
[Python] Anmelden Ihres eigenen Moduls
GOTO in Python mit erhabenem Text 3