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:

dependencies:
  logging: ^1.0.0

Després, executa pub get per instal·lar la dependència.

Importació

Importa la biblioteca logging al teu fitxer Dart:

import 'package:logging/logging.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.

© Copyright 2024. Tots els drets reservats