Basisprincipes van de module logging
Configureer loggers, stel niveaus in en verstuur berichten op de juiste manier.
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") # shownEen 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 automaticallyExtra 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-enableLoggerhië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 handlersDe 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.
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
- Basisprincipes van de module logging
- Handlers, formatters en filters
- Gestructureerde logging
- Debuggen met pdb