0Pricing
Python Academy · Lekcja

Podstawy modułu logging

Proszę konfigurować rejestratory, ustawiać poziomy i prawidłowo emitować komunikaty.

Podstawy modułu logging to bezpłatna lekcja Python Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Python Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Python Academy zawiera 4 lekcji w sumie.

Dlaczego logging zamiast print

Moduł logging udostępnia poziomy ważności, konfigurowalne miejsca docelowe danych wyjściowych, znaczniki czasu oraz możliwość wyciszania danych wyjściowych bez zmian w kodzie.

import logging

logging.basicConfig(level=logging.DEBUG)
logging.debug("debug message")
logging.info("info message")
logging.warning("warning message")
logging.error("error message")
logging.critical("critical message")

Poziomy logowania

Python definiuje pięć standardowych poziomów o rosnącej ważności: DEBUG, INFO, WARNING, ERROR, CRITICAL. Emitowane są tylko komunikaty na skonfigurowanym poziomie lub wyższym.

import logging
# Numeric values:
# DEBUG    = 10
# INFO     = 20
# WARNING  = 30
# ERROR    = 40
# CRITICAL = 50

logging.basicConfig(level=logging.WARNING)
logging.debug("hidden")   # not shown
logging.warning("shown")  # shown

Pobieranie loggera

W każdym module używaj logging.getLogger(__name__). Tworzy to hierarchię odpowiadającą strukturze modułów.

import logging

logger = logging.getLogger(__name__)

def process(data):
    logger.info("Processing %d items", len(data))
    return [x * 2 for x in data]

Opcje basicConfig

basicConfig szybko konfiguruje główny logger. Typowe argumenty nazwane to: level, format, filename, filemode.

import logging

logging.basicConfig(
    level=logging.DEBUG,
    format="%(asctime)s %(levelname)s %(name)s — %(message)s",
    datefmt="%Y-%m-%d %H:%M:%S",
)

Pola formatu logów

Najważniejsze pola formatu to: %(levelname)s, %(name)s, %(message)s, %(asctime)s, %(filename)s, %(lineno)d.

import logging

fmt = "%(asctime)s | %(levelname)-8s | %(name)s:%(lineno)d | %(message)s"
logging.basicConfig(level=logging.DEBUG, format=fmt)
logging.info("Server started on port 8080")

Logowanie wyjątków

Użyj logger.exception() wewnątrz bloku except, aby zapisać komunikat ORAZ pełny traceback.

import logging
logger = logging.getLogger(__name__)

try:
    1 / 0
except ZeroDivisionError:
    logger.exception("Division failed")
    # Logs message + traceback automatically

Dodatkowy kontekst za pomocą extra=

Przekaż słownik jako extra=, aby dodać własne pola do rekordu logu.

import logging
logger = logging.getLogger(__name__)

logging.basicConfig(
    format="%(asctime)s %(levelname)s [%(user)s] %(message)s"
)
logger.info("Login successful", extra={"user": "alice"})

Leniwe formatowanie ciągów znaków

Przekazuj argumenty formatu osobno — nie formatuj ciągów z wyprzedzeniem. Pozwala to uniknąć kosztu tworzenia ciągu, gdy komunikat zostanie odfiltrowany.

import logging
logger = logging.getLogger(__name__)

# BAD (always builds the string):
logger.debug(f"Processing {len(data)} items")

# GOOD (only builds if DEBUG is enabled):
logger.debug("Processing %d items", len(data))

Wyłączanie logowania

Wywołaj logging.disable(level), aby globalnie pominąć wszystkie komunikaty do danego poziomu włącznie — jest to przydatne w testach.

import logging

logging.disable(logging.CRITICAL)  # suppress everything
# All log calls now silently do nothing

logging.disable(logging.NOTSET)    # re-enable

Hierarchia loggerów

Nazwy loggerów używają kropek jako separatorów. Loggery potomne przekazują rekordy do loggerów nadrzędnych, chyba że ustawiono propagate=False.

import logging

parent = logging.getLogger("myapp")
child = logging.getLogger("myapp.database")

# child propagates to parent by default
child.warning("DB slow")  # also appears in myapp's handlers

Główny logger

Główny logger (używany przez logging.warning() itd.) jest przodkiem wszystkich loggerów. Należy go skonfigurować za pomocą basicConfig lub bezpośrednio przez dodanie handlerów.

import logging

root = logging.getLogger()  # root logger
root.setLevel(logging.DEBUG)

handler = logging.StreamHandler()
root.addHandler(handler)

Szybkie sprawdzenie

Jakiej metody logowania należy użyć wewnątrz bloku except, aby automatycznie dołączyć pełny traceback?

Podsumowanie

Używaj nazwanych loggerów z getLogger(__name__), konfiguruj je za pomocą basicConfig, przekazuj argumenty formatu w sposób leniwy i używaj logger.exception() do zapisywania tracebacków błędów. Loggery tworzą hierarchię zakorzenioną w głównym loggerze.

Często zadawane pytania

Czy lekcja „Podstawy modułu logging” jest bezpłatna?

Tak — pełny tekst „Podstawy modułu logging” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Python Academy, przejdź na CoddyKit PRO. Kurs Python Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Podstawy modułu logging”?

Proszę konfigurować rejestratory, ustawiać poziomy i prawidłowo emitować komunikaty. Ćwiczysz Python Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Python Academy?

Nie wymagamy żadnego doświadczenia. Python Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.

Ile czasu zajmuje lekcja „Podstawy modułu logging”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Python Academy?

Tak. Każda lekcja Python Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Podstawy modułu logging
  2. Handlery, formatery i filtry
  3. Logowanie strukturalne
  4. Debugowanie za pomocą pdb
← Powrót do Python Academy