Ein Memorandum beim Schreiben von experimentellem Code ~ Anmelden in Python

Einführung

Wenn ich neuen experimentellen Code schreibe, vergesse ich immer die Magie des Protokollierens, also schreibe ich ihn, damit ich ihn kopieren kann.

Es wird angenommen, dass die Situation wie folgt ist.

Code

Schreiben Sie Folgendes in die Datei der Bibliothek. Die Protokollierungsstufe für diese Datei ist auf "logger.setLevel (log.INFO)" festgelegt. (Nützlich, wenn Sie jede Funktion debuggen möchten)

module.py


import logging as log

#Logger-Einstellungen für jede Datei
logger = log.getLogger(__name__)
logger.setLevel(log.INFO) #Ändern Sie die Anzeigeebene für jedes Modul

def func():
    logger.info("From module.func()")
    logger.info("Key1\tValue")
    logger.debug("Dies wird nicht angezeigt")

Schreiben Sie für das Hauptskript, das diese Bibliothek importiert und verwendet, wie folgt. Sie können den Formatierer beliebig definieren. Es ist einfacher, die Protokolldatei später zu verarbeiten, wenn Sie die Nachricht von der vorherigen wie in diesem Beispiel trennen.

** 2020/06/03 Fix: Es scheint, dass die Ebene des anzuzeigenden Protokolls auf der Handlerseite festgelegt werden musste, also habe ich es auf diese Weise behoben. ** ** **

main.py


import logging as log

import module

#Logger-Einstellungen für jede Datei
logger = log.getLogger(__name__)

if __name__=="__main__":
    formatter = "[%(asctime)s] %(levelname)s - %(name)s\t%(message)s"
    handlers = [log.StreamHandler(), log.FileHandler("logfile")]
    for handler in handlers:
        handler.setLevel(log.INFO) #Ebene des anzuzeigenden Protokolls
    log.basicConfig(
        level = log.DEBUG, format = formatter, handlers = handlers
    )

    #Protokollausgabe
    logger.info("Call module.func() from main.")
    module.func()
    logger.debug("Dies wird angezeigt")

Ausgabebeispiel

Die folgenden Protokolle werden in die Standardausgabe bzw. in die Datei ausgegeben. Dies ist praktisch, da Sie sehen können, von welcher Datei das Protokoll gesendet wurde.

[2020-05-15 12:39:20,676] INFO - __main__       Call module.func() from main.
[2020-05-15 12:39:20,677] INFO - module From module.func()
[2020-05-15 12:39:20,678] INFO - module Key1    Value
[2020-05-15 12:39:20,680] DEBUG - __main__Dies wird angezeigt

Recommended Posts

Ein Memorandum beim Schreiben von experimentellem Code ~ Anmelden in Python
Beim Schreiben eines Programms in Python
Vorsichtsmaßnahmen beim Beizen einer Funktion in Python
Was Emacs-Benutzer wissen sollten, wenn sie Python-Code in Sublime Text schreiben
[Tipps] Leicht lesbares Schreiben beim Verbinden von Funktionen in Python
Python-Variablenargument Ein Memorandum beim Erben einer definierten Klasse
Ein Memo, das ich in Python zusammengeführt habe
Teilen Sie Dateien beim Schreiben des Vim-Plugins in Python
Ordnungsgemäße Anmeldung in Python
Vor dem Schreiben von Python-Code
Eine Code-Sammlung, die häufig in persönlichem Python verwendet wird
Ein Memorandum zum Ausführen eines Python-Skripts in einer Bat-Datei
Beachten Sie beim Initialisieren einer Liste in Python
Was ist in dieser Variablen (wenn das Python-Skript ausgeführt wird)?
Verwenden Sie communic (), wenn Sie eine Ausgabe in einem Python-Unterprozess empfangen
Machen Sie einen Screenshot in Python
Erstellen Sie ein Wörterbuch in Python
Memorandum über Korrelation [Python]
Erstellen Sie ein Lesezeichen in Python
Achtung bei os.mkdir in Python
Generieren Sie QR-Code in Python
Ein Memorandum über den Python-Mock
Zeichne ein Herz in Python
In Python gelernter Zeichencode
[Django] Memorandum, wenn Sie asynchron kommunizieren möchten [Python3]
Ein Hinweis beim Erstellen eines gerichteten Diagramms mit Graphviz in Python
Machen Sie so etwas wie einen Python-Interpreter mit Visual Studio Code
Codeblock beim Schreiben der Ausführung von Konsolenbefehlen (Shell) in Qiita
[GCP] Ein Memorandum zum Ausführen eines Python-Programms mit Cloud-Funktionen
Praktische Schreibmethode beim kontinuierlichen Anhängen an die Liste in Python
Erstellen Sie den Code, der in Python "A und vorgeben B" ausgibt
Ein Memo, dass ich eine Grundfunktion in Python mit Wiederholung geschrieben habe
Zusammenfassung der Punkte, die beim Schreiben eines Programms zu beachten sind, das unter Python 2.5 ausgeführt wird
[Unterprozess] Wenn Sie ein anderes Python-Programm in Python-Code ausführen möchten
Wettbewerb mit VS-Code Erstellen Sie eine Python-Umgebung für Profis unter Windows
Schreiben Sie eine Dichotomie in Python
Ein Memorandum bei der Verwendung von schöner Suppe
Vorsichtsmaßnahmen bei der Verwendung von Pit mit Python
Drücken Sie einen Befehl in Python (Windows)
[Python] Anmelden Ihres eigenen Moduls
[Python] Generiert QR-Code im Speicher
Erstellen Sie einen DI-Container mit Python
Verhalten beim Auflisten in Python heapq
Zeichnen Sie eine Streudiagrammmatrix mit Python
Moduszeile, wenn Sie den entsprechenden Python-Code in Vim öffnen
Einstellungen beim Schreiben von Google App Engine / Python-Apps mit Intellij Idea
ABC166 in Python A ~ C Problem
Schreiben Sie A * (A-Stern) -Algorithmen in Python
[Python] Ausführungszeit, wenn eine Funktion in einen Wörterbuchwert eingegeben wird
Erstellen Sie eine Binärdatei in Python
Zeitzonenspezifikation beim Konvertieren einer Zeichenfolge in einen Datums- / Uhrzeittyp mit Python
[Python ORM] Notation beim Schreiben von SQL mithilfe von Unterabfragen in der IN-Klausel in SQL Alchemy
Schreiben Sie Selentestcode in Python
Löse ABC036 A ~ C mit Python
Schreiben Sie ein Kreisdiagramm in Python
Schreiben Sie das Vim-Plugin in Python
Schreiben Sie eine Suche mit Tiefenpriorität in Python
Hinweise zum Schreiben von Python-ähnlichem Code
Bei Verwendung von @property in Python wird ein Attribut nicht festgelegt
Vorsichtsmaßnahmen beim Erstellen eines Python-Generators