Inhaltsverzeichnis
1. Protokollhierarchie
2. Erstellen Sie ein Modul
三、使用日志的优点
Heim Backend-Entwicklung Python-Tutorial So debuggen Sie den Code des Protokollierungsmoduls in Python

So debuggen Sie den Code des Protokollierungsmoduls in Python

May 10, 2023 pm 04:31 PM
python logging

1. Protokollhierarchie

Bevor Sie beginnen, sollten Sie beachten, dass es bei der Protokollierung eine hierarchische Struktur gibt, die als Protokollbaum oder Loggerhierarchie bezeichnet wird. Die Hierarchie besteht aus mehreren Ebenen, wobei jede Ebene einen anderen Schweregrad der Protokollinformationen darstellt. Die häufigsten Stufen sind:

KRITISCH #Ein kritischer Fehler ist aufgetreten, das Programm kann möglicherweise nicht weiter ausgeführt werden.
FEHLER #Ein Fehler ist aufgetreten, der untersucht werden sollte.
WARNUNG #Ein Hinweis darauf, dass etwas Unerwartetes passiert ist oder auf etwas hindeutet Problem in naher Zukunft.
INFO ​ #Allgemeine Informationen zur Programmausführung.
DEBUG ​ #Detaillierte Informationen für Debugging-Zwecke.

2. Erstellen Sie ein Modul

Lassen Sie uns ein Modul namens set_logging.py Python-Modul: <code>set_logging.py的python模块:

import logging
logger = logging.getLogger()
def set_logger():
  logger.setLevel(logging.INFO)
  handler = logging.StreamHandler()
  handler.setLevel(logger_level)
  formatter = logging.Formatter(&#39;%(asctime)s - %(name)s - %(levelname)s - %(message)s&#39;)
  handler.setFormatter(formatter)
  logger.addHandler(handler)
Nach dem Login kopieren

为了明确代码,我们用getLogger函数创建一个日志器实例,并使用setLevel来设置日志级别(DEBUGINFO等)。日志器的setLevel方法就像一个过滤器,它决定了一条日志信息是否应该被处理并发送给处理程序。例如,如果我们将日志记录器的级别设置为INFO,那么日志记录器就不会向处理程序发送级别为DEBUG的消息,因为它们的严重程度低于在日志记录器上设置的最低级别。它只将级别为INFO或更高的日志消息(即WARNINGERRORCRITICAL)发送给处理程序进行处理。

我们创建一个StreamHandler,将日志信息发送到一个流中,如控制台或终端。它被用来输出日志信息以达到调试的目的。我们还为处理程序设置了级别。

我们这样做是因为当处理程序收到来自日志记录器的消息时,它将把这些消息与它的级别进行比较,并在发出之前过滤掉严重程度较低的消息。当我们有不同的处理程序时:

logger.setLevel(logging.INFO)
file_handler = logging.FileHandler()
file_handler.setLevel(logging.ERROR)
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.WARNING)

由于日志记录器的级别被设置为INFO,它只向两个处理程序发送级别为INFO或更高的日志消息,但每个处理程序只处理达到或超过其指定日志级别的消息。

回到我们的主要例子,然后我们创建一个格式化器并将其添加到处理程序中。格式化器指定了日志消息的格式,包括时间戳、日志记录器名称、日志级别和消息。最后,我们将处理程序添加到日志记录器中"。

现在在代码中,需要调用set_logger,如下所示:

import logging
from set_logging import set_logger
set_logger()
logger = logging.getLogger()
def roman_number(s: str) -> int:
    dic = {"I": 1, "V": 5, "X": 10, "L": 50, "C": 100, "D": 500, "M": 1000}
    res = 0
    pre = None
    for char in s:
        res += dic.get(char)
        if dic.get(pre) and dic.get(pre) < dic.get(char):
            res -= 2 * dic.get(pre)
        pre = char
    logger.info("logging is awesome")
    return res
roman_number("IV")
Nach dem Login kopieren

运行这段代码,结果如下:

2023-03-04 02:26:57,619 - root - INFO - logging is awesome

三、使用日志的优点

  • 级别。一个日志记录器提供了一种方法来为不同类型的消息设置不同的日志级别,如DEBUGINFOWARNINGERRORCRITICALrrreee

    Um den Code zu verdeutlichen, verwenden wir die Funktion getLogger, um eine Logger-Instanz zu erstellen und verwenden setLevel, um die Protokollebene festzulegen ( DEBUG, INFO usw.). Die setLevel-Methode des Loggers fungiert wie ein Filter, der bestimmt, ob eine Protokollnachricht verarbeitet und an den Handler gesendet werden soll. Wenn wir beispielsweise die Stufe des Loggers auf INFO setzen, sendet der Logger keine Nachrichten mit der Stufe DEBUG an den Handler, da deren Schweregrad niedriger als die festgelegte Mindeststufe ist der Holzfäller. Es werden nur Protokollmeldungen der Stufe INFO oder höher (also WARNING, ERROR oder CRITICAL) gesendet Handler für die Verarbeitung.
  • Wir erstellen einen StreamHandler, um Protokollinformationen an einen Stream, beispielsweise eine Konsole oder ein Terminal, zu senden. Es dient zur Ausgabe von Protokollinformationen zu Debugging-Zwecken. Wir legen auch die Ebene für den Handler fest.

    Wir tun dies, weil der Handler, wenn er Nachrichten vom Logger empfängt, diese Nachrichten mit seiner Ebene vergleicht und Nachrichten mit geringerem Schweregrad vor der Ausgabe herausfiltert. Wenn wir verschiedene Handler haben:

  • logger.setLevel(logging.INFO)
  • file_handler = logging.FileHandler()

    file_handler.setLevel(logging.ERROR)console_handler = logging.StreamHandler()console_handler.setLevel( logging.WARNING )

  • Da die Ebene des Loggers auf INFO eingestellt ist, sendet er nur Protokollnachrichten mit der Ebene INFO oder höher an beide Handler. Jeder Handler verarbeitet jedoch nur Nachrichten, die oder erfüllen die angegebene Protokollstufe überschreiten.

    Zurück zu unserem Hauptbeispiel: Anschließend erstellen wir einen Formatierer und fügen ihn dem Handler hinzu. Der Formatierer gibt das Format der Protokollnachricht an, einschließlich Zeitstempel, Loggername, Protokollebene und Nachricht. Schließlich fügen wir den Handler zum Logger hinzu.

    Jetzt müssen wir im Code set_logger aufrufen, wie unten gezeigt:
  • rrreee
Führen Sie diesen Code aus und das Ergebnis sieht wie folgt aus: 🎜🎜 🎜 04.03.2023 02:26:57,619 - root - INFO - Protokollierung ist großartig🎜🎜🎜 3. Vorteile der Verwendung von Protokollen🎜
    🎜🎜🎜level🎜 Ein Logger bietet eine Methode zum Festlegen unterschiedlicher Protokollebenen für verschiedene Arten von Nachrichten, z. B. DEBUG, INFO, WARNING, ERROR und KRITISCH Dies erleichtert das Filtern und Priorisieren von Protokollmeldungen basierend auf ihrem Schweregrad. Natürlich kann das Drucken das gleiche Verhalten nachahmen wie die Protokollierung, aber es erfordert mehr Hardcoding und ist nicht so flexibel wie die Protokollierung . 🎜🎜🎜🎜🎜Das Drucken von Protokollinformationen kann langsamer sein als die Verwendung eines Loggers, insbesondere bei der Verarbeitung großer Datenmengen oder der häufigen Protokollierung. 🎜Logger bieten eine Möglichkeit, das Protokollierungsverhalten zu konfigurieren B. Protokollebenen, Protokollziele und Protokollformate, ohne den Quellcode zu ändern. Dies erleichtert die Verwaltung und Pflege des Protokollierungsverhaltens im Laufe der Zeit. Durch die Flexibilität können Sie Protokollinformationen an mehrere Ziele senden , Datei oder Datenbank Diese Flexibilität erleichtert die Verwaltung und Analyse von Protokollen.

Das obige ist der detaillierte Inhalt vonSo debuggen Sie den Code des Protokollierungsmoduls in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Kann gegen Code in Windows 8 ausgeführt werden Kann gegen Code in Windows 8 ausgeführt werden Apr 15, 2025 pm 07:24 PM

VS -Code kann unter Windows 8 ausgeführt werden, aber die Erfahrung ist möglicherweise nicht großartig. Stellen Sie zunächst sicher, dass das System auf den neuesten Patch aktualisiert wurde, und laden Sie dann das VS -Code -Installationspaket herunter, das der Systemarchitektur entspricht und sie wie aufgefordert installiert. Beachten Sie nach der Installation, dass einige Erweiterungen möglicherweise mit Windows 8 nicht kompatibel sind und nach alternativen Erweiterungen suchen oder neuere Windows -Systeme in einer virtuellen Maschine verwenden müssen. Installieren Sie die erforderlichen Erweiterungen, um zu überprüfen, ob sie ordnungsgemäß funktionieren. Obwohl VS -Code unter Windows 8 möglich ist, wird empfohlen, auf ein neueres Windows -System zu upgraden, um eine bessere Entwicklungserfahrung und Sicherheit zu erzielen.

Ist die VSCODE -Erweiterung bösartig? Ist die VSCODE -Erweiterung bösartig? Apr 15, 2025 pm 07:57 PM

VS -Code -Erweiterungen stellen böswillige Risiken dar, wie das Verstecken von böswilligem Code, das Ausbeutetieren von Schwachstellen und das Masturbieren als legitime Erweiterungen. Zu den Methoden zur Identifizierung böswilliger Erweiterungen gehören: Überprüfung von Verlegern, Lesen von Kommentaren, Überprüfung von Code und Installation mit Vorsicht. Zu den Sicherheitsmaßnahmen gehören auch: Sicherheitsbewusstsein, gute Gewohnheiten, regelmäßige Updates und Antivirensoftware.

So führen Sie Programme in der terminalen VSCODE aus So führen Sie Programme in der terminalen VSCODE aus Apr 15, 2025 pm 06:42 PM

Im VS -Code können Sie das Programm im Terminal in den folgenden Schritten ausführen: Erstellen Sie den Code und öffnen Sie das integrierte Terminal, um sicherzustellen, dass das Codeverzeichnis mit dem Terminal Working -Verzeichnis übereinstimmt. Wählen Sie den Befehl aus, den Befehl ausführen, gemäß der Programmiersprache (z. B. Pythons Python your_file_name.py), um zu überprüfen, ob er erfolgreich ausgeführt wird, und Fehler auflösen. Verwenden Sie den Debugger, um die Debugging -Effizienz zu verbessern.

Wählen Sie zwischen PHP und Python: Ein Leitfaden Wählen Sie zwischen PHP und Python: Ein Leitfaden Apr 18, 2025 am 12:24 AM

PHP eignet sich für Webentwicklung und schnelles Prototyping, und Python eignet sich für Datenwissenschaft und maschinelles Lernen. 1.PHP wird für die dynamische Webentwicklung verwendet, mit einfacher Syntax und für schnelle Entwicklung geeignet. 2. Python hat eine kurze Syntax, ist für mehrere Felder geeignet und ein starkes Bibliotheksökosystem.

PHP und Python: Verschiedene Paradigmen erklärt PHP und Python: Verschiedene Paradigmen erklärt Apr 18, 2025 am 12:26 AM

PHP ist hauptsächlich prozedurale Programmierung, unterstützt aber auch die objektorientierte Programmierung (OOP). Python unterstützt eine Vielzahl von Paradigmen, einschließlich OOP, funktionaler und prozeduraler Programmierung. PHP ist für die Webentwicklung geeignet, und Python eignet sich für eine Vielzahl von Anwendungen wie Datenanalyse und maschinelles Lernen.

Kann Visual Studio -Code in Python verwendet werden Kann Visual Studio -Code in Python verwendet werden Apr 15, 2025 pm 08:18 PM

VS -Code kann zum Schreiben von Python verwendet werden und bietet viele Funktionen, die es zu einem idealen Werkzeug für die Entwicklung von Python -Anwendungen machen. Sie ermöglichen es Benutzern: Installation von Python -Erweiterungen, um Funktionen wie Code -Abschluss, Syntax -Hervorhebung und Debugging zu erhalten. Verwenden Sie den Debugger, um Code Schritt für Schritt zu verfolgen, Fehler zu finden und zu beheben. Integrieren Sie Git für die Versionskontrolle. Verwenden Sie Tools für die Codeformatierung, um die Codekonsistenz aufrechtzuerhalten. Verwenden Sie das Lining -Tool, um potenzielle Probleme im Voraus zu erkennen.

Kann VSCODE für MAC verwendet werden Kann VSCODE für MAC verwendet werden Apr 15, 2025 pm 07:36 PM

VS -Code ist auf Mac verfügbar. Es verfügt über leistungsstarke Erweiterungen, GIT -Integration, Terminal und Debugger und bietet auch eine Fülle von Setup -Optionen. Für besonders große Projekte oder hoch berufliche Entwicklung kann VS -Code jedoch Leistung oder funktionale Einschränkungen aufweisen.

Kann vscode ipynb ausführen Kann vscode ipynb ausführen Apr 15, 2025 pm 07:30 PM

Der Schlüssel zum Ausführen von Jupyter -Notebook im VS -Code liegt darin, sicherzustellen, dass die Python -Umgebung ordnungsgemäß konfiguriert ist, verstehen, dass die Codeausführungsreihenfolge mit der Zellreihenfolge übereinstimmt, und sich der großen Dateien oder externen Bibliotheken bewusst zu sein, die die Leistung beeinflussen können. Die vom VS -Code bereitgestellten Codebetausch- und Debugging -Funktionen können die Codierungseffizienz erheblich verbessern und Fehler verringern.

See all articles