Grunnleggende om logging-modulen
Konfigurer loggere, angi nivåer og send ut meldinger på riktig måte.
Grunnleggende om logging-modulen er en gratis leksjon i Python Academy på CoddyKit. Dette er leksjon 1 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Python Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Python Academy inneholder totalt 4 leksjoner.
Hvorfor logging fremfor print?
logging-modulen tilbyr alvorlighetsnivåer, konfigurerbare utdataområder, tidsstempler og muligheten til å slå av utdata uten kodeendringer.
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")Loggnivåer
Python definerer fem standardnivåer i stigende alvorlighetsgrad: DEBUG, INFO, WARNING, ERROR, CRITICAL. Bare meldinger på eller over det konfigurerte nivået sendes ut.
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") # shownHente en logger
Bruk logging.getLogger(__name__) i hver modul. Dette oppretter et hierarki som samsvarer med modulstrukturen.
import logging
logger = logging.getLogger(__name__)
def process(data):
logger.info("Processing %d items", len(data))
return [x * 2 for x in data]Alternativer for basicConfig
basicConfig konfigurerer rotloggeren raskt. Vanlige kwargs er: 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",
)Felt i loggformatet
Viktige formatfelt: %(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")Logge unntak
Bruk logger.exception() i en except-blokk for å logge meldingen og hele tracebacken.
import logging
logger = logging.getLogger(__name__)
try:
1 / 0
except ZeroDivisionError:
logger.exception("Division failed")
# Logs message + traceback automaticallyEkstra kontekst med extra=
Send en dict som extra= for å legge til egendefinerte felt i loggoppføringen.
import logging
logger = logging.getLogger(__name__)
logging.basicConfig(
format="%(asctime)s %(levelname)s [%(user)s] %(message)s"
)
logger.info("Login successful", extra={"user": "alice"})Forsinket strengformatering
Send formateringsargumentene separat – ikke forhåndsformater strengene. Da unngår De kostnaden ved å bygge strengen når meldingen filtreres bort.
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))Deaktivere logging
Kall logging.disable(level) for å undertrykke alle meldinger på eller under dette nivået globalt – nyttig i tester.
import logging
logging.disable(logging.CRITICAL) # suppress everything
# All log calls now silently do nothing
logging.disable(logging.NOTSET) # re-enableLoggerhierarki
Loggernavn bruker punktum som skilletegn. Underordnede loggere videresender til overordnede loggere med mindre 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 handlersRotloggeren
Rotloggeren (fra for eksempel logging.warning()) er opphavet til alle loggere. Konfigurer den med basicConfig eller ved å legge til handlere direkte.
import logging
root = logging.getLogger() # root logger
root.setLevel(logging.DEBUG)
handler = logging.StreamHandler()
root.addHandler(handler)Hurtigsjekk
Hvilken logging-metode bør De bruke i en except-blokk for automatisk å ta med hele tracebacken?
Oppsummering
Bruk navngitte loggere med getLogger(__name__), konfigurer via basicConfig, send formateringsargumenter uten forhåndsformatering og bruk logger.exception() for feiltracebacker. Loggerne danner et hierarki med rotloggeren som utgangspunkt.
Lær deg Python med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 76
- Leksjoner
- 320
Ofte stilte spørsmål
Er leksjonen «Grunnleggende om logging-modulen» gratis?
Ja – hele teksten i «Grunnleggende om logging-modulen» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Python Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Python Academy inneholder totalt 4 leksjoner.
Hva lærer jeg i «Grunnleggende om logging-modulen»?
Konfigurer loggere, angi nivåer og send ut meldinger på riktig måte. Du øver på Python Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Python Academy?
Ingen tidligere erfaring er nødvendig. Python Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 1 av 4.
Hvor lang tid tar leksjonen «Grunnleggende om logging-modulen»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Python Academy-leksjonen?
Ja. Alle Python Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Grunnleggende om logging-modulen
- Håndterere, formatterere og filtre
- Strukturert logging
- Feilsøking med pdb