El registre (logging) és una part essencial del desenvolupament de programari, ja que permet als desenvolupadors monitoritzar i depurar aplicacions de manera efectiva. En aquest tema, aprendrem com utilitzar el registre en Dart per capturar informació important durant l'execució del programa.
Objectius del Tema
- Entendre la importància del registre.
- Aprendre a utilitzar la biblioteca
logging
de Dart. - Configurar diferents nivells de registre.
- Escriure missatges de registre.
- Gestionar sortides de registre.
Importància del Registre
El registre és crucial per:
- Monitoritzar el comportament de l'aplicació: Permet veure què està passant dins de l'aplicació en temps real.
- Depuració: Ajuda a identificar i solucionar errors.
- Auditoria: Manté un registre de les accions i esdeveniments importants.
- Anàlisi de rendiment: Permet identificar colls d'ampolla i optimitzar el rendiment.
Utilitzant la Biblioteca logging
de Dart
Instal·lació
Per utilitzar la biblioteca logging
, primer hem d'afegir-la al nostre projecte. Afegeix la següent línia al fitxer pubspec.yaml
:
Després, executa pub get
per instal·lar la dependència.
Importació
Importa la biblioteca logging
al teu fitxer Dart:
Configuració del Registre
Configura el registre creant un Logger
i establint un Handler
per gestionar els missatges de registre.
void main() { // Configura el nivell de registre Logger.root.level = Level.ALL; // Afegeix un handler per imprimir els missatges de registre a la consola Logger.root.onRecord.listen((record) { print('${record.level.name}: ${record.time}: ${record.message}'); }); // Crea un logger final Logger log = Logger('MyLogger'); // Escriu missatges de registre log.info('Això és un missatge informatiu.'); log.warning('Això és un avís.'); log.severe('Això és un error greu.'); }
Nivells de Registre
Els nivells de registre determinen la importància dels missatges. Els nivells disponibles són:
Nivell | Descripció |
---|---|
Level.ALL |
Registra tots els missatges. |
Level.FINEST |
Missatges de depuració molt detallats. |
Level.FINER |
Missatges de depuració detallats. |
Level.FINE |
Missatges de depuració. |
Level.CONFIG |
Missatges de configuració. |
Level.INFO |
Missatges informatius. |
Level.WARNING |
Missatges d'advertència. |
Level.SEVERE |
Missatges d'error greus. |
Level.SHOUT |
Missatges crítics. |
Level.OFF |
Desactiva el registre. |
Exemple Pràctic
A continuació, es mostra un exemple pràctic que utilitza diferents nivells de registre:
import 'package:logging/logging.dart'; void main() { // Configura el nivell de registre Logger.root.level = Level.ALL; // Afegeix un handler per imprimir els missatges de registre a la consola Logger.root.onRecord.listen((record) { print('${record.level.name}: ${record.time}: ${record.message}'); }); // Crea un logger final Logger log = Logger('MyLogger'); // Escriu missatges de registre log.finest('Detall molt fi.'); log.finer('Detall fi.'); log.fine('Detall.'); log.config('Configuració.'); log.info('Informació.'); log.warning('Advertència.'); log.severe('Error greu.'); log.shout('Crític!'); }
Exercicis Pràctics
Exercici 1: Configuració Bàsica del Registre
Configura un logger en un nou projecte Dart que imprimeixi missatges de registre a la consola. Escriu missatges de diferents nivells i observa la sortida.
Exercici 2: Filtratge de Missatges
Modifica la configuració del logger per només registrar missatges d'advertència (Level.WARNING
) o superiors. Escriu missatges de diferents nivells i comprova que només es mostren els missatges d'advertència i errors.
Solucions
Exercici 1: Configuració Bàsica del Registre
import 'package:logging/logging.dart'; void main() { Logger.root.level = Level.ALL; Logger.root.onRecord.listen((record) { print('${record.level.name}: ${record.time}: ${record.message}'); }); final Logger log = Logger('MyLogger'); log.finest('Detall molt fi.'); log.finer('Detall fi.'); log.fine('Detall.'); log.config('Configuració.'); log.info('Informació.'); log.warning('Advertència.'); log.severe('Error greu.'); log.shout('Crític!'); }
Exercici 2: Filtratge de Missatges
import 'package:logging/logging.dart'; void main() { Logger.root.level = Level.WARNING; Logger.root.onRecord.listen((record) { print('${record.level.name}: ${record.time}: ${record.message}'); }); final Logger log = Logger('MyLogger'); log.finest('Detall molt fi.'); log.finer('Detall fi.'); log.fine('Detall.'); log.config('Configuració.'); log.info('Informació.'); log.warning('Advertència.'); log.severe('Error greu.'); log.shout('Crític!'); }
Conclusió
El registre és una eina poderosa per monitoritzar, depurar i optimitzar aplicacions. En aquest tema, hem après a configurar i utilitzar la biblioteca logging
de Dart per capturar i gestionar missatges de registre. Amb aquesta base, pots començar a implementar registres efectius en els teus projectes per millorar la qualitat i mantenibilitat del teu codi.
Curs de Programació en Dart
Mòdul 1: Introducció a Dart
- Introducció a Dart
- Configuració de l'Entorn de Desenvolupament
- El Teu Primer Programa en Dart
- Sintaxi i Estructura Bàsica
Mòdul 2: Conceptes Bàsics de Dart
Mòdul 3: Col·leccions
Mòdul 4: Programació Orientada a Objectes en Dart
Mòdul 5: Funcionalitats Avançades de Dart
Mòdul 6: Gestió d'Errors i Depuració
Mòdul 7: Paquets i Biblioteques de Dart
Mòdul 8: Dart per a Web i Mòbil
- Introducció a Flutter
- Construcció d'una Aplicació Simple amb Flutter
- Dart per al Desenvolupament Web