Python Academy · Les

Basisprincipes van de module logging

Configureer loggers, stel niveaus in en verstuur berichten op de juiste manier.

Les 1 van 413 stappen

Basisprincipes van de module logging is een gratis Python Academy-les op CoddyKit. Dit is les 1 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Python Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Python Academy bevat in totaal 4 lessen.

Waarom logregistratie in plaats van print?

De module logging biedt ernstniveaus, instelbare uitvoerbestemmingen, tijdstempels en de mogelijkheid om uitvoer stil te leggen zonder wijzigingen in de code.

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

Logniveaus

Python definieert vijf standaardniveaus in oplopende ernst: DEBUG, INFO, WARNING, ERROR, CRITICAL. Alleen berichten op of boven het ingestelde niveau worden uitgegeven.

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

Een logger ophalen

Gebruik logging.getLogger(__name__) in elke module. Hiermee ontstaat een hiërarchie die overeenkomt met de modulestructuur.

import logging

logger = logging.getLogger(__name__)

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

Opties voor basicConfig

basicConfig configureert snel de hoofdlogger. Veelgebruikte trefwoordargumenten: 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",
)

Velden voor logindeling

Belangrijke indelingsvelden: %(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")

Uitzonderingen loggen

Gebruik logger.exception() in een except-blok om het bericht én de volledige stacktrace vast te leggen.

import logging
logger = logging.getLogger(__name__)

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

Extra context met extra=

Geef een woordenboek door als extra= om aangepaste velden aan de logregistratie toe te voegen.

import logging
logger = logging.getLogger(__name__)

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

Luie tekenreeksopmaak

Geef opmaakargumenten afzonderlijk door — maak tekenreeksen niet vooraf op. Zo vermijd je de kosten van het opbouwen van tekenreeksen wanneer het bericht wordt weggefilterd.

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

Logregistratie uitschakelen

Roep logging.disable(level) aan om wereldwijd alle berichten tot en met dat niveau te onderdrukken — handig bij tests.

import logging

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

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

Loggerhiërarchie

Loggernamen gebruiken punten als scheidingstekens. Onderliggende loggers geven berichten door aan bovenliggende loggers, tenzij 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

De rootlogger

De rootlogger (van logging.warning() enzovoort) is de voorouder van alle loggers. Configureer deze met basicConfig of door rechtstreeks handlers toe te voegen.

import logging

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

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

Korte controle

Welke logmethode gebruik je in een except-blok om automatisch de volledige stacktrace op te nemen?

Samenvatting

Gebruik benoemde loggers met getLogger(__name__), configureer ze via basicConfig, geef opmaakargumenten lui door en gebruik logger.exception() voor stacktraces van fouten. Loggers vormen een hiërarchie met de rootlogger als basis.

Gratis beginnen

Leer Python met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
76
Lessen
320

Veelgestelde vragen

Is de les “Basisprincipes van de module logging” gratis?

Ja — de volledige tekst van “Basisprincipes van de module logging” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Python Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Python Academy bevat in totaal 4 lessen.

Wat leer ik in “Basisprincipes van de module logging”?

Configureer loggers, stel niveaus in en verstuur berichten op de juiste manier. Je oefent met Python Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Python Academy te beginnen?

Ervaring vooraf is niet nodig. Python Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 1 van 4.

Hoe lang duurt de les “Basisprincipes van de module logging”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Python Academy?

Ja. Elke les over Python Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Basisprincipes van de module logging
  2. Handlers, formatters en filters
  3. Gestructureerde logging
  4. Debuggen met pdb
← Terug naar Python Academy