[ 
https://issues.apache.org/jira/browse/LOG4J2-1797?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15884093#comment-15884093
 ] 

Remko Popma commented on LOG4J2-1797:
-------------------------------------

Would it be possible to use the LMAX ExceptionHandler interface (or introduce 
our own interface which has match the signature of {{handleEventException}} so 
we can have one impl that satisfies both interfaces)? I also like the idea of 
having a {{handleOnShutdownException}} method.

Here is what the LMAX interface looks like, javadocs and all:

{code}
/**
 * Callback handler for uncaught exceptions in the event processing cycle of 
the {@link BatchEventProcessor}
 */
public interface ExceptionHandler<T> {
    /**
     * <p>Strategy for handling uncaught exceptions when processing an 
event.</p>
     * <p>
     * <p>If the strategy wishes to terminate further processing by the {@link 
BatchEventProcessor}
     * then it should throw a {@link RuntimeException}.</p>
     *
     * @param ex       the exception that propagated from the {@link 
EventHandler}.
     * @param sequence of the event which cause the exception.
     * @param event    being processed when the exception occurred.  This can 
be null.
    void handleEventException(Throwable ex, long sequence, T event);

    /**
     * Callback to notify of an exception during {@link 
LifecycleAware#onStart()}
     * @param ex throw during the starting process.
     */
    void handleOnStartException(Throwable ex);

    /**
     * Callback to notify of an exception during {@link 
LifecycleAware#onShutdown()}
     * @param ex throw during the shutdown process.
     */
    void handleOnShutdownException(Throwable ex);
}
{code}

> Add asynchronous/non-blocking SPIs for appenders
> ------------------------------------------------
>
>                 Key: LOG4J2-1797
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-1797
>             Project: Log4j 2
>          Issue Type: Improvement
>          Components: Appenders
>            Reporter: Matt Sicker
>
> Some appenders (e.g., Kafka and Cassandra) support using an asynchronous SPI 
> with callbacks (to make them non-blocking). In a Scala-based API, this could 
> be easily handled with the Future class, and with Java 8, this could be 
> easily handled with a CompleteableFuture class. However, if this API 
> improvement is desired for Java 7, then we'd need to create a basic callback 
> API that would ideally be easy to update to CompleteableFuture later on.
> In theory, such an SPI could also be adapted to use the Flow classes in Java 
> 9. This may be an interesting API to follow as we could use the Reactive 
> Streams standard API or a compatible API.
> Some main things that would be desirable in such an SPI would include 
> asynchronous error handling (e.g., to trigger a failover appender). This 
> should be adapted to work well with the generic AsyncAppender and AsyncLogger 
> as well.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscr...@logging.apache.org
For additional commands, e-mail: log4j-dev-h...@logging.apache.org

Reply via email to