Grundlæggende om logging-modulet
Konfigurér loggere, angiv niveauer, og udsend meddelelser korrekt.
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") # shownHent 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 automaticallyEkstra 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-enableLoggerhierarki
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 handlersRodloggeren
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.
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
- Grundlæggende om logging-modulet
- Handlers, formatters og filtre
- Struktureret logging
- Fejlfinding med pdb