[Python] Anmelden Ihres eigenen Moduls

Überblick

Ich habe ein Beispiel für die Ausgabe von Protokollen erstellt, als ich mein eigenes Python-Modul erstellt habe.

Inhalte verarbeiten

Rufen Sie ein Modul namens sample.py von main.py auf. Ich schreibe den Protokollausgabeprozess in sample.py, aber wenn der Root-Logger nicht in main.py erstellt wird, gibt der Logger im Modul nichts aus.

Hands on

Erstellen Sie ein Modul

Innerhalb des Moduls erstellen. Schreiben Sie die Verarbeitung der Protokollausgabe.

sample.py


# -*- coding:utf-8 -*-
from logging import getLogger, DEBUG, NullHandler


class Sample:
    def __init__(self):
        self._logger = getLogger(__name__)
        self._logger.addHandler(NullHandler())
        self._logger.setLevel(DEBUG)
        self._logger.propagate = True

    def main(self):
        self._logger.debug('Debug')
        self._logger.info('Info')
        self._logger.warn('Warn')
        self._logger.error('Error')

Erstellen Sie einen Root-Logger

Erstellen Sie eine Root-Logger-Definition zur Verwendung in main.py mit dem Dateinamen my_logger.py. (Die folgende Definition kann in main.py vorgenommen werden, befindet sich jedoch in einer separaten Datei.)

my_logger.py


# -*- coding:utf-8 -*-
from logging import Formatter, handlers, StreamHandler, getLogger, DEBUG


def root_logger():
    #Holen Sie sich Root-Logger
    logger = getLogger()

    #Formatierer erstellen
    formatter = Formatter('%(asctime)s %(name)s %(funcName)s [%(levelname)s]: %(message)s')

    #Erstellen Sie einen Handler und legen Sie den Formatierer fest
    handler = StreamHandler()
    handler.setFormatter(formatter)

    #Legen Sie den Handler im Logger fest und legen Sie die Ebene für die Ereigniserfassung fest
    logger.addHandler(handler)
    #Protokollstufe einstellen
    logger.setLevel(DEBUG)

    return logger

Erstellen Sie main.py.

Erstellen Sie main.py, das das Beispielmodul aufruft. Wie Sie im Kommentar unten sehen können, rufen Sie my_logger.py auf, das zuvor erstellt wurde, um einen Root-Logger zu erstellen.

main.py


#!/usr/bin/env python
# -*- coding:utf-8 -*-
import my_logger
import sample
from logging import Formatter, handlers, StreamHandler, getLogger, INFO


if __name__ == '__main__':
    #Erstellen Sie einen Root-Logger
    logger = my_logger.root_logger()
    logger.info('The root logger is created.')

    #Modulaufruf
    sample = sample.Sample()
    sample.main()

Lauf

Wenn Sie main.py ausführen, wird das Protokoll wie unten gezeigt ausgegeben.

$ python main.py
2020-02-17 14:01:21,721 root <module> [INFO]: The root logger is created.
2020-02-17 14:01:21,721 sample main [DEBUG]: Debug
2020-02-17 14:01:21,721 sample main [INFO]: Info
2020-02-17 14:01:21,721 sample main [WARNING]: Warn
2020-02-17 14:01:21,721 sample main [ERROR]: Error

Wenn Sie keinen Root-Logger erstellen

Überprüfen Sie das Verhalten, wenn der Root-Logger nicht erstellt wurde.

Ändern Sie main.py.

Kommentieren Sie den Teil von main.py aus, der den Root-Logger erstellt.

main.py


#!/usr/bin/env python
# -*- coding:utf-8 -*-
import my_logger
import sample
from logging import Formatter, handlers, StreamHandler, getLogger, INFO


if __name__ == '__main__':
    #Kommentieren Sie Folgendes aus.
    # logger = my_logger.root_logger()
    # logger.info('The root logger is created.')

    #Modulaufruf
    sample = sample.Sample()
    sample.main()

Lauf

Wenn ich main.py starte, wird nichts ausgegeben.

$ python main.py

das ist alles

Referenz

Recommended Posts

[Python] Anmelden Ihres eigenen Moduls
[LLDB] Erstellen Sie Ihren eigenen Befehl mit Python
Verwenden Sie einfach Ihre eigenen Funktionen in Python
Holen Sie sich Ihre eigene IP-Adresse in Python
Ordnungsgemäße Anmeldung in Python
Erstellen Sie schnell Ihr eigenes Modul mit setuptools (Python)
Importieren Sie Ihre eigenen Module mit der Python-Entwicklung von Grasshopper
Erstellen Sie Ihre eigenen Big Data in Python zur Validierung
Erstellen Sie Ihr eigenes Random Dot Stereogram (RDS) in Python.
Versuchen Sie, Ihr eigenes Intro-Quiz mit Python zu verbessern
Verwenden Sie CASA Toolkit in Ihrer eigenen Python-Umgebung
[Road to Intermediate Python] Definieren Sie in Ihrer eigenen Klasse
Rufen Sie Ihr eigenes Python-Modul aus dem ROS-Paket auf
[Python] Erstelle deinen eigenen LINE-Bot
Versuchen Sie, Ihre eigenen Objekte mit Prioritätswarteschlangen in Python zu sortieren
Führen Sie das Python-Unittest-Modul in vs2017 aus
Python-Protokollierung
Beherrsche das schwache Ref-Modul in Python
Erstellen Sie Ihre eigene Diagrammstrukturklasse und deren Zeichnung mit Python
Versuchen Sie, sich mit Python bei qiita anzumelden
Warteschlangen- und Python-Implementierungsmodul "deque"
Vergleich japanischer Konvertierungsmodule in Python3
[Python] Packen und verteilen Sie Ihre eigenen Module
[Python] Registrieren Sie Ihre eigene Bibliothek in PyPI
Bis Sie Ihre eigene Python-Bibliothek installieren
So importieren Sie Ihr eigenes Modul mit jupyter
Modul zum Generieren des Wortes N-Gramm in Python
ModuleNotFoundError in Python: Kein Modul mit dem Namen story
Veröffentlichen Sie Ihre eigene Python-Bibliothek auf Homebrew
Versuchen Sie, Ihr Tagebuch mit Python zu durchsuchen
Holen Sie sich die Cloud-Protokollierung in Python in 10 Minuten
Modulimport und Ausnahmebehandlung in Python
Installieren Sie das Python-Modul in einem beliebigen Verzeichnis
Aktualisieren des Python-Moduls in OSX El Capitan
Importfehler: Kein Modul mit dem Namen 'xxxxx' in Python3
Quadtree in Python --2
Python in der Optimierung
CURL in Python
Metaprogrammierung mit Python
Python 3.3 mit Anaconda
Geokodierung in Python
SendKeys in Python
Metaanalyse in Python
Python-Modul importieren
Unittest in Python
Epoche in Python
Zwietracht in Python
Erstellen Sie mit Python selbst die bekannte 3-Tage-Darstellung des Röntgenflusses von NOAA / GOES
Deutsch in Python
DCI in Python
Quicksort in Python
nCr in Python
N-Gramm in Python
Programmieren mit Python
Plink in Python
Konstante in Python
FizzBuzz in Python
SQLite in Python