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

Schreiben eigener Handler

eva/3 Application Builder verwendet als Standard die Java LoggerAPI. Weitere Informationen können in der JavaAPI unter java.util.logging eingesehen werden.

Ein eigener Handler erweitert die Klasse

java.util.Handler

wobei die drei Methoden

public void close() throws SecurityException

public void flush()

und

public void publish(LogRecord record)

implementiert werden müssen. Die Methode

publish(LogRecord record)

wird jedes mal dann aufgerufen, wenn ein Fehler aufgetreten ist. Beispiel eines eigenen Handlers:

public class MyMessageboxHandler extends Handler {

    /**
     * Close the <tt>Handler</tt> and free all associated resources.
     *
     * The close method will perform a <tt>flush</tt> and then close the
     * <tt>Handler</tt>.   After close has been called this <tt>Handler</tt>
     * should no longer be used.  Method calls may either be silently
     * ignored or may throw runtime exceptions.
     *
     * @exception  SecurityException  if a security manager exists and if
     *             the caller does not have <tt>LoggingPermission("control")</tt>
                                                                  .
     */
    public void close() throws SecurityException {
    }

    /**
     * Flush any buffered output.
     */
    public void flush() {
    }

    /**
     * Publish a <tt>LogRecord</tt>.
     *
     * The logging request was made initially to a <tt>Logger</tt> object,
     * which initialized the <tt>LogRecord</tt> and forwarded it here.
     *
     * The <tt>Handler</tt>  is responsible for formatting the message, when and
     * if necessary.  The formatting should include localization.
     *
     * @param  record  description of the log event
     */
    public void publish(LogRecord record) {
        //test if the record should be logged
        if (record == null || !this.getFilter().isLoggable(record)) {
            return;
        }

        new Message().action(new String[] { record.getMessage(), "Error" }, null);

    }
}

Besondere Bedeutung im eva/3 Application Builder Context kommt der Filteraufruf zu Beginn der

publish(LogRecord record)

Methode zu. Der SLogger gib einen Filter vor, der den Handler formularabhängig gestaltet und zudem eine Aufteilung in die drei Fehlerkategorien ApplicationErrors, DatabaseErrors und UserInterfaceErrors vornimmt. Der Filter sollte als Erstes in der

publish(LogRecord record)

Methode geprüft werden. Findet die Prüfung nicht statt, so wir der Handler systemweit eingesetzt und besitzt keine Dreiteilung mehr.