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.