
package javacodebook.misc.log_handler;

import java.util.logging.*;
import java.io.*;

/**
 * Einsatz von Handlern zur Verteilung von Log-Meldungen
 * @author  Mark Donnermeyer
 */
public class Starter {
    
    public static void main(String []args) throws IOException {

        // Einen Logger erzeugen
        Logger logger = 
            Logger.getLogger("javacodebook.misc.log_handler");        
        
        // Ausgabelevel für den Logger explizit setzen. 
        // Es werden alle Ausgaben verarbeitet.
        logger.setLevel(Level.INFO);

        // Zwei Handler erzeugen
        Handler errorHandler  = new FileHandler("c:\\temp\\error.log");
        Handler accessHandler = new FileHandler("c:\\temp\\access.log");

        // Welche Logging-Infos sollen geschrieben werden
        errorHandler.setLevel(Level.WARNING);
        accessHandler.setLevel(Level.FINEST);
        
        // Das Format, in dem die Daten geschrieben werden
        errorHandler.setFormatter(new XMLFormatter());
        accessHandler.setFormatter(new SimpleFormatter());
        
        // Die Handler zu dem Logger hinzufügen
        logger.addHandler(errorHandler);
        logger.addHandler(accessHandler);
        
        // Eine Ausgabe mit dem Level FINE ausgeben.
        logger.log(Level.INFO, "Starte Programmausführung");
        try{
            // Eine Schleife mit einer Division by zero!
            int j;
            for (int i=10; i>=0; i--)
                j = 100/i;
        } catch (ArithmeticException ex){
            // Oops, ein Fehler. Entsprechende Warnung ausgeben.
            logger.log(Level.WARNING,"Fehler bei der Ausführung",ex);
        }
        // Eine Ausgabe mit dem Level INFO ausgeben
        logger.log(Level.INFO, "Fertig mit der Ausführung");
    }
}