En aquest tema, aprendrem com gestionar el registre (logging) i la depuració (debugging) en una aplicació Flask. Aquests conceptes són essencials per identificar i solucionar problemes, així com per monitoritzar el comportament de la nostra aplicació en entorns de desenvolupament i producció.

  1. Introducció al Registre (Logging)

El registre és el procés de gravar missatges de text que descriuen el comportament de l'aplicació. Aquests missatges poden incloure informació sobre errors, advertències, informació general i depuració.

1.1. Configuració Bàsica del Registre

Flask utilitza el mòdul logging de Python per gestionar els registres. A continuació, es mostra com configurar el registre bàsic en una aplicació Flask:

import logging
from flask import Flask

app = Flask(__name__)

# Configuració bàsica del registre
logging.basicConfig(level=logging.DEBUG)

@app.route('/')
def home():
    app.logger.debug('Això és un missatge de depuració')
    app.logger.info('Això és un missatge informatiu')
    app.logger.warning('Això és un missatge d\'advertència')
    app.logger.error('Això és un missatge d\'error')
    app.logger.critical('Això és un missatge crític')
    return "Consulta els registres per veure els missatges"

if __name__ == '__main__':
    app.run(debug=True)

1.2. Nivells de Registre

Els nivells de registre determinen la gravetat dels missatges que es registren. Els nivells comuns són:

  • DEBUG: Missatges detallats, generalment útils només per a depuració.
  • INFO: Missatges informatius que indiquen el progrés normal de l'aplicació.
  • WARNING: Missatges d'advertència que indiquen un problema potencial.
  • ERROR: Missatges d'error que indiquen un problema que ha impedit que una part de l'aplicació funcioni correctament.
  • CRITICAL: Missatges crítics que indiquen un problema greu que ha impedit que l'aplicació funcioni.

1.3. Registre a Fitxers

Per registrar missatges en un fitxer, podem configurar un FileHandler:

import logging
from logging.handlers import RotatingFileHandler
from flask import Flask

app = Flask(__name__)

# Configuració del registre a fitxer
handler = RotatingFileHandler('app.log', maxBytes=10000, backupCount=1)
handler.setLevel(logging.INFO)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
app.logger.addHandler(handler)

@app.route('/')
def home():
    app.logger.info('Això és un missatge informatiu registrat en un fitxer')
    return "Consulta el fitxer de registre per veure els missatges"

if __name__ == '__main__':
    app.run(debug=True)

  1. Depuració (Debugging)

La depuració és el procés d'identificar i solucionar errors en el codi. Flask ofereix diverses eines per facilitar la depuració.

2.1. Mode de Depuració

El mode de depuració de Flask proporciona informació detallada sobre errors i permet la recàrrega automàtica de l'aplicació quan es fan canvis en el codi.

from flask import Flask

app = Flask(__name__)

@app.route('/')
def home():
    return "Hola, món!"

if __name__ == '__main__':
    app.run(debug=True)

2.2. Depurador Interactiu

Quan el mode de depuració està activat, Flask proporciona un depurador interactiu que permet explorar l'estat de l'aplicació en el moment en què es produeix un error.

2.3. Utilització de PDB

PDB (Python Debugger) és una eina de depuració integrada en Python que permet executar el codi pas a pas i inspeccionar variables. Per utilitzar PDB en una aplicació Flask, podem inserir una crida a pdb.set_trace() en el codi:

import pdb
from flask import Flask

app = Flask(__name__)

@app.route('/')
def home():
    pdb.set_trace()  # Punt de ruptura per a la depuració
    return "Hola, món!"

if __name__ == '__main__':
    app.run(debug=True)

  1. Exercicis Pràctics

Exercici 1: Configuració del Registre

  1. Configura el registre en una aplicació Flask perquè registri missatges de nivell INFO i superior en un fitxer anomenat app.log.
  2. Afegeix missatges de registre en diferents punts de l'aplicació per registrar informació sobre les sol·licituds rebudes.

Exercici 2: Depuració amb PDB

  1. Afegeix un punt de ruptura amb pdb.set_trace() en una ruta de la teva aplicació Flask.
  2. Executa l'aplicació en mode de depuració i accedeix a la ruta per activar el depurador interactiu.
  3. Utilitza les comandes de PDB per inspeccionar l'estat de l'aplicació i continuar l'execució.

  1. Conclusió

En aquesta secció, hem après com configurar el registre i utilitzar eines de depuració en una aplicació Flask. El registre ens permet monitoritzar el comportament de l'aplicació i identificar problemes, mentre que les eines de depuració ens ajuden a solucionar errors de manera eficient. Aquests conceptes són fonamentals per mantenir una aplicació robusta i fiable.

En el següent tema, explorarem com crear APIs RESTful amb Flask, un component clau per a la comunicació entre aplicacions web i serveis externs.

Curs de Desenvolupament Web amb Flask

Mòdul 1: Introducció a Flask

Mòdul 2: Conceptes Bàsics de Flask

Mòdul 3: Formularis i Entrada d'Usuari

Mòdul 4: Integració de Bases de Dades

Mòdul 5: Autenticació d'Usuaris

Mòdul 6: Conceptes Avançats de Flask

Mòdul 7: APIs RESTful amb Flask

Mòdul 8: Desplegament i Producció

Mòdul 9: Proves i Millors Pràctiques

Mòdul 10: Extensions i Ecosistema de Flask

© Copyright 2024. Tots els drets reservats