Application.java

import java.io.*;
import java.util.logging.*;
public class Application {
  /** Journaliseur de l'application. */
  final static Logger logger = Logger.getLogger("application");
  /** Formateur simple utilisé par tous les clients. */
  static Formatter formatter = new SimpleFormatter();
  /**
   * Retourne un client qui enregistre les événements de niveau
   * supérieur au niveau level et contenant le paramètre
   * correspondant à filter, si ce dernier n'est pas null.
   */
  static Handler getFileHandler(String file, Level level, Filter filter)
    throws IOException {
    Handler h = new FileHandler(file);
    h.setLevel(level);
    if (filter!=null)
      h.setFilter(filter);
    h.setFormatter(formatter);
    return h;
  }
  /** Méthode principale. */
  public static void main(String[] args) throws IOException {
    // Pour tout laisser passer
    logger.setLevel(Level.ALL);
    // Pour éviter la propagation des événements (voir section suivante)
    logger.setUseParentHandlers(false);
    try {
      Handler h;
      /* Client pour les experts:
         tous les événements de niveau > que NIVEAU_EXPERT */
      h = getFileHandler("%t/application.experts.log",
             MonFiltre.NIVEAU_EXPERT,
             null);
      logger.addHandler(h);
      /* Client pour l'électricien:
         tous les événements de niveau > à NIVEAU_ELECTRICIEN */
      h = getFileHandler("%t/application.electricien.log",
             MonFiltre.NIVEAU_ELECTRICIEN,
             null);
      logger.addHandler(h);
      /* Client pour l'administrateur réseau:
         tous les événements de niveau > à NIVEAU_ADMIN_RESEAU
         et qui ont le paramètre MonFiltre.ADMIN_RESEAU */
      h = getFileHandler("%t/application.adminreseau.log",
             MonFiltre.NIVEAU_ADMIN_RESEAU,
             MonFiltre.ADMIN_RESEAU);
      logger.addHandler(h);
      /* Client pour l'administrateur système:
         tous les événements de niveau > à NIVEAU_ADMIN_SYSTEME
         et qui ont le paramètre MonFiltre.ADMIN_SYSTEME */
      h = getFileHandler("%t/application.adminsysteme.log",
             MonFiltre.NIVEAU_ADMIN_SYSTEME,
             MonFiltre.ADMIN_SYSTEME);
      logger.addHandler(h);
      /* Client pour les ingénieurs réseau:
         tous les événements de niveau > à NIVEAU_INGE_RESEAU */
      h = getFileHandler("%t/application.ingenieursreseaux.log",
             MonFiltre.NIVEAU_INGE_RESEAU,
             null);
      logger.addHandler(h);
      // Démarrage de l'application
      logger.log(MonFiltre.NIVEAU_EXPERT,"Application démarrée");
      // ...
    } catch (Exception e) {
      logger.log(MonFiltre.NIVEAU_EXPERT,"Problème application: ",e);
      // ...
    }
    // Fin de l'application
    logger.log(MonFiltre.NIVEAU_EXPERT,"Application terminée");
  }
}