Custom Appender
You can create a custom appender in two ways:
- Implement Log.AppenderExample:
public class CustomAppender implements Log.Appender {
    private Map options;
    public void setOptions(Map options) {
        this.options = options;
    }
    public void append(Context ctx) {
        // Custom code
    }
}  - Extend Log.DefaultAppenderExample:
public class CustomAppender extends Log.DefaultAppender {
    public override void append(Log.Context ctx) {
        String message = ctx.message;
        String pattern = (String)this.options.get('pattern');
        // Custom code
    }
}