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