eva/3 Application BuilderEntwicklung eigener eva/3 KomponentenHandler für SLogger 

Ansprechen des Loggers von eigenen Klassen

Fehlermeldungen, Warnungen oder einfach nur Informationen können von eigenen Klassen aus an den Logger gesendet werden. Ebenso können dem Logger weitere Handler hinzugefügt oder wieder entfernt werden.

Meldungen an den Logger senden

Um dem Logger eigene Meldungen zuzusenden, ist zunächst der eva/3 Logger zu holen, an den die Meldung gesendet werden soll. Anschließend kann eine Meldung an den Logger gesendet werden. Das Beispiel zeigt die Versendung einer Fehlermeldung, die nach einer Exception aufgetreten ist. Besonders wichtig ist die Angabe der Exception-Referenz, soweit vorhanden, sowie der Klassennname der durch den Aufruf

this.getClass().getName()

geholt werden kann. Ebenso kann auch die Klasse mit Klassenpfad als String übergeben werden.

import java.util.logging.Level;
import java.util.logging.Logger;

import com.odc.eva3.rt.command.Command;
import com.odc.eva3.rt.macro.Macro;

public class LoggerExample implements Command {

    /**
     * Logger to protocol errors and messages
     */
    protected static Logger logger = Logger.getLogger("com.odc.eva3.rt);

    /**
     * Runs the command. <br>
     * This is the entry point for eva/3 <code>Commands</code>. An executing <
     code>macro</code> calls <code>action</code> with the parameters defined in
     * the eva/3 properties editor. <br>
     * <br>
     *
     * @param args the parameter values. The parameter values are defined in the
     eva/3 Property-Editor in the Report- or Form-Editor.
     * @param macro the calling macro
     */

    public Object action(Object[] args, Macro macro) {
        try {
            /*
             * do something which can cause an exception
             */
            int i = 0 / 0;
        } catch (Throwable t) {
            /*
             * Log a message, specifying source class and method,
             * with associated Throwable information.
             * (Log level, Class name, Method name, Message, Exception object)
             */
            logger.logp(Level.SEVERE, this.getClass().getName(), "action", 
                        "An Error has occured", t);
        }

        return null;
    }
}

Um eine Informationsmitteilung zu versenden, kann auch die etwas kompaktere Methode

logger.log(Level.INFO, "Message");

verwendet werden.

Handler hinzufügen

Um einen Handler aus einer eigenen Klasse aus hinzuzufügen, ist der eva/3 Logger zu holen. Anschließend kann dem Logger ein weiterer Handler hinzugefügt werden:

    
public Object action(Object[] args, Macro macro) {
        MessageboxHandler handler = new MessageboxHandler();
        logger.addHandler(handler);
        return null;
    }