ApplicationBis.java

import java.util.logging.*;
import java.io.*;
public class ApplicationBis {
  /** Le journaliseur général, père des deux autres. */
  final static Logger logger = Logger.getLogger("application");
  /** Le journaliseur des administrateurs. */
  final static Logger admlogger = Logger.getLogger("application.adm");
  /** Le journaliseur de l'électricien. */
  final static Logger eleclogger = Logger.getLogger("application.elec");
  /** 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 éviter la propagation des événements
    // jusqu'au journaliseur racine
    logger.setUseParentHandlers(false);
    try {
      /* Configuration du journaliseur général, avec ses deux clients */
      Handler h = getFileHandler("%t/application.experts.log",
                 MonFiltre.NIVEAU_EXPERT, null);
      logger.addHandler(h);
      h = getFileHandler("%t/application.inges.log",
             MonFiltre.NIVEAU_ADMIN_RESEAU, null);
      logger.addHandler(h);     
      logger.setLevel(MonFiltre.NIVEAU_EXPERT); 
      /* Config. du journaliseur pour l'électricien */
      h = getFileHandler("%t/application.electricien.log",
             MonFiltre.NIVEAU_ELECTRICIEN, null);
      eleclogger.addHandler(h);
      eleclogger.setLevel(MonFiltre.NIVEAU_ELECTRICIEN);
      /* Config. du journaliseur pour les adm., avec ses deux clients */
      h = getFileHandler("%t/application.adminReseau.log",
             MonFiltre.NIVEAU_ADMIN_SYSTEME, null);
      admlogger.addHandler(h);
      h = getFileHandler("%t/application.adminSysteme.log",
             MonFiltre.NIVEAU_ADMIN_SYSTEME,
             new FiltreAdmSystem());
      admlogger.addHandler(h);
      admlogger.setLevel(MonFiltre.NIVEAU_ADMIN_SYSTEME);
      // 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");
  }
}