Python Academy · Lektion

Grundlæggende om logging-modulet

Konfigurér loggere, angiv niveauer, og udsend meddelelser korrekt.

Lektion 1 af 413 trin

Grundlæggende om logging-modulet er en gratis Python Academy-lektion på CoddyKit. Dette er lektion 1 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Python Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Python Academy-kurset indeholder 4 lektioner i alt.

Hvorfor bruge logning frem for print?

Modulet logging leverer alvorlighedsniveauer, konfigurerbare outputdestinationer, tidsstempler og mulighed for at slå output fra uden kodeændringer.

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")

Logniveauer

Python definerer fem standardniveauer i stigende alvorlighedsgrad: DEBUG, INFO, WARNING, ERROR, CRITICAL. Kun meddelelser på eller over det konfigurerede niveau bliver skrevet.

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

Hent en logger

Brug logging.getLogger(__name__) i hvert modul. Det opretter et hierarki, der svarer til modulstrukturen.

import logging

logger = logging.getLogger(__name__)

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

Indstillinger for basicConfig

basicConfig konfigurerer hurtigt rodloggeren. Almindelige nøgleordsargumenter 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",
)

Felter i logformatet

Vigtige formatfelter: %(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")

Logning af undtagelser

Brug logger.exception() i en except-blok for at logge meddelelsen og hele tracebacken.

import logging
logger = logging.getLogger(__name__)

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

Ekstra kontekst med extra=

Send en ordbog som extra= for at tilføje brugerdefinerede felter til logposten.

import logging
logger = logging.getLogger(__name__)

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

Udskudt strengformatering

Send formateringsargumenterne separat – forhåndsformatér ikke strenge. Det undgår omkostningen ved at opbygge strengen, når meddelelsen filtreres fra.

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

Deaktivering af logning

Kald logging.disable(level) for globalt at undertrykke alle meddelelser på eller under det niveau – det er nyttigt i tests.

import logging

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

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

Loggerhierarki

Logg ernavne bruger punktummer som separatorer. Underordnede loggere videresender til overordnede loggere, medmindre 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

Rodloggeren

Rodloggeren (fra f.eks. logging.warning()) er stamfar til alle loggere. Konfigurér den med basicConfig, eller tilføj handlere direkte.

import logging

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

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

Hurtigt tjek

Hvilken logningsmetode skal du bruge i en except-blok for automatisk at inkludere hele tracebacken?

Opsummering

Brug navngivne loggere med getLogger(__name__), konfigurér via basicConfig, send formateringsargumenter udskudt, og brug logger.exception() til fejltracebacks. Loggere danner et hierarki med rodloggeren som rod.

Gratis at komme i gang

Lær Python med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
76
Lektioner
320

Ofte stillede spørgsmål

Er lektionen “Grundlæggende om logging-modulet” gratis?

Ja — hele teksten til “Grundlæggende om logging-modulet” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Python Academy-kurset, skal du opgradere til CoddyKit PRO. Python Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Grundlæggende om logging-modulet”?

Konfigurér loggere, angiv niveauer, og udsend meddelelser korrekt. Du øver dig i Python Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Python Academy?

Der kræves ingen tidligere erfaring. Python Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 4.

Hvor lang tid tager lektionen “Grundlæggende om logging-modulet”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Python Academy-lektion?

Ja. Alle Python Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Grundlæggende om logging-modulet
  2. Handlers, formatters og filtre
  3. Struktureret logging
  4. Fejlfinding med pdb
← Tilbage til Python Academy