


So debuggen Sie den Code des Protokollierungsmoduls in Python
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('%(asctime)s - %(name)s - %(levelname)s - %(message)s') handler.setFormatter(formatter) logger.addHandler(handler)
为了明确代码,我们用getLogger
函数创建一个日志器实例,并使用setLevel
来设置日志级别(DEBUG
、INFO
等)。日志器的setLevel
方法就像一个过滤器,它决定了一条日志信息是否应该被处理并发送给处理程序。例如,如果我们将日志记录器的级别设置为INFO
,那么日志记录器就不会向处理程序发送级别为DEBUG
的消息,因为它们的严重程度低于在日志记录器上设置的最低级别。它只将级别为INFO
或更高的日志消息(即WARNING
、ERROR
或CRITICAL
)发送给处理程序进行处理。
我们创建一个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")
运行这段代码,结果如下:
2023-03-04 02:26:57,619 - root - INFO - logging is awesome
三、使用日志的优点
-
级别。一个日志记录器提供了一种方法来为不同类型的消息设置不同的日志级别,如
Um den Code zu verdeutlichen, verwenden wir die FunktionDEBUG
、INFO
、WARNING
、ERROR
和CRITICAL
rrreeegetLogger
, um eine Logger-Instanz zu erstellen und verwendensetLevel
, um die Protokollebene festzulegen (DEBUG
,INFO
usw.). DiesetLevel
-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 aufINFO
setzen, sendet der Logger keine Nachrichten mit der StufeDEBUG
an den Handler, da deren Schweregrad niedriger als die festgelegte Mindeststufe ist der Holzfäller. Es werden nur Protokollmeldungen der StufeINFO
oder höher (alsoWARNING
,ERROR
oderCRITICAL
) 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 EbeneINFO
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 Codeset_logger
aufrufen, wie unten gezeigt: rrreee
- 🎜🎜🎜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!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

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

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



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.

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.

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.

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 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.

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.

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.

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.
