The main thing about synchronicity that we're relying on here is that
Appenders are called synchronously. To relieve the performance issues with
doing that on blocking appenders, a user can use async loggers or an async
appender wrapper for simplicity. However, I don't see why an appender
couldn't be asynchronously implemented.

Adding more explicit support for asynchronous appenders (e.g., a sort of
promise-based API) would be a different story since I think all of our
current appenders use synchronous APIs (except maybe ListAppender?).

On 12 December 2016 at 12:55, Gary Gregory <garydgreg...@gmail.com> wrote:

> On Mon, Dec 12, 2016 at 9:30 AM, Matt Sicker <boa...@gmail.com> wrote:
>
>> There was talk about making NIO/channel-based appenders that would get
>> nearly async performance without using async loggers or appenders. I'm not
>> so sure that making an appender's implementation asynchronous/non-blocking
>> is against the architecture.
>>
>
> We do not specify that appender MUST be synchronous anywhere:
>
> - https://logging.apache.org/log4j/2.x/manual/architecture.html
> - https://logging.apache.org/log4j/2.x/manual/appenders.html
> - https://logging.apache.org/log4j/2.x/log4j-core/apidocs/
> org/apache/logging/log4j/core/Appender.html
>
> We do talk about how to make code paths explicitly _asynchronous_.
>
> I seems quite OK to surface whatever bells and whistle the underlying
> library provides for an appender. I do not see why we should lock users out
> of these feature. For me, it's about give users choices and documenting
> them.
>
> Gary
>
>
>
>> Though adding API support for Future or CompleteableFuture or something
>> similar would be interesting. It could certainly open up some avenues for
>> asynchronous optimizations or new ideas.
>>
>> On 12 December 2016 at 11:16, Mikael Ståldal <mikael.stal...@magine.com>
>> wrote:
>>
>>> This issue: https://issues.apache.org/jira/browse/LOG4J2-1733
>>> raises an architectural issue.
>>>
>>> As far as I understand, Log4j assumes that regular appenders (the
>>> AsyncAppender is a special case) to be synchronous, and
>>> provides AsyncAppender and async loggers if you want async behavior.
>>>
>>> It would be easy to fulfill LOG4J2-1733 and add an option to make
>>> KafkaAppeder asynchronous. But that that would violate the contract, and
>>> might cause problems that are not so easy to foresee.
>>>
>>> However, refusing LOG4J2-1733 and insisting in keeping all appenders
>>> synchronous, even when real async I/O is available, will limit performance.
>>>
>>> Should we refine the appender interface and explicitly allow them to be
>>> asynchronous, changing AsyncAppender and parts of core to make use of this
>>> to optimize processing?
>>>
>>> Thoughts?
>>>
>>> --
>>> [image: MagineTV]
>>>
>>> *Mikael Ståldal*
>>> Senior software developer
>>>
>>> *Magine TV*
>>> mikael.stal...@magine.com
>>> Grev Turegatan 3  | 114 46 Stockholm, Sweden  |   www.magine.com
>>>
>>> Privileged and/or Confidential Information may be contained in this
>>> message. If you are not the addressee indicated in this message
>>> (or responsible for delivery of the message to such a person), you may
>>> not copy or deliver this message to anyone. In such case,
>>> you should destroy this message and kindly notify the sender by reply
>>> email.
>>>
>>
>>
>>
>> --
>> Matt Sicker <boa...@gmail.com>
>>
>
>
>
> --
> E-Mail: garydgreg...@gmail.com | ggreg...@apache.org
> Java Persistence with Hibernate, Second Edition
> <https://www.amazon.com/gp/product/1617290459/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1617290459&linkCode=as2&tag=garygregory-20&linkId=cadb800f39946ec62ea2b1af9fe6a2b8>
>
> <http:////ir-na.amazon-adsystem.com/e/ir?t=garygregory-20&l=am2&o=1&a=1617290459>
> JUnit in Action, Second Edition
> <https://www.amazon.com/gp/product/1935182021/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1935182021&linkCode=as2&tag=garygregory-20&linkId=31ecd1f6b6d1eaf8886ac902a24de418%22>
>
> <http:////ir-na.amazon-adsystem.com/e/ir?t=garygregory-20&l=am2&o=1&a=1935182021>
> Spring Batch in Action
> <https://www.amazon.com/gp/product/1935182951/ref=as_li_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1935182951&linkCode=%7B%7BlinkCode%7D%7D&tag=garygregory-20&linkId=%7B%7Blink_id%7D%7D%22%3ESpring+Batch+in+Action>
> <http:////ir-na.amazon-adsystem.com/e/ir?t=garygregory-20&l=am2&o=1&a=1935182951>
> Blog: http://garygregory.wordpress.com
> Home: http://garygregory.com/
> Tweet! http://twitter.com/GaryGregory
>



-- 
Matt Sicker <boa...@gmail.com>

Reply via email to