GitHub user mlangc created a discussion: Call for feedback: I've implemented an 
AsyncHttpAppender

I've spent a considerable part of my Christmas holidays putting together an 
[AsyncHttpAppender](https://github.com/mlangc/more-log4j2/blob/async-http-appender/src/main/java/com/github/mlangc/more/log4j2/appenders/AsyncHttpAppender.java#L66)
 that I want to release in
the 
[more-log4j2](https://mvnrepository.com/artifact/com.github.mlangc/more-log4j2) 
library that I'm maintaining.

My personal use-case is pushing logs to the [Dynatrace Ingest 
API](https://github.com/mlangc/more-log4j2/tree/async-http-appender?tab=readme-ov-file#Publishing-Logs-To-Dynatrace)
 without relying on proprietary Java agents or 
[OpenTelemetry](https://opentelemetry.io/docs/zero-code/java/spring-boot-starter/additional-instrumentations/),
 but the appender is generic and can be integrated with other log monitoring 
solutions like 
[Datadog](https://github.com/mlangc/more-log4j2/tree/async-http-appender?tab=readme-ov-file#Publishing-Logs-To-Datadog)
 and 
[Grafana](https://github.com/mlangc/more-log4j2/tree/async-http-appender?tab=readme-ov-file#Publishing-Logs-To-Grafana).

In theory, pushing logs to these APIs is also possible with the regular 
[HttpAppender](https://logging.apache.org/log4j/2.x/manual/appenders/network.html#HttpAppender),
 however its performance is not acceptable even for toy projects, since logging 
a few lines per second ties up an entire thread due to the synchronous nature 
of the `HttpAppender`.

Thanks to compression and batching, the `AsyncHttpAppender` can handle log 
throughputs that are [multiple orders of magnitude 
higher](https://github.com/mlangc/more-log4j2/tree/async-http-appender?tab=readme-ov-file#performance)
 than what you can achieve with the regular `HttpAppender`. The implementation 
features [different strategies to deal with overload 
situations](https://github.com/mlangc/more-log4j2/tree/async-http-appender?tab=readme-ov-file#what-if-the-backend-is-not-keeping-up),
 and [retries with exponential 
backoff](https://github.com/mlangc/more-log4j2/tree/async-http-appender?tab=readme-ov-file#what-if-the-backend-is-unreliable-or-temporary-unavailable).

I would like to release this new appender as part of `more-log4j2-2.0.0` in the 
near future, but before doing so, I want to
collect and address any feedback you may have. You can use [the snapshot 
release](https://central.sonatype.com/repository/maven-snapshots/com/github/mlangc/more-log4j2/1.2.1-SNAPSHOT/more-log4j2-1.2.1-20260104.122111-4.pom)
 that I've pushed to Maven Central, if you want some hands-on experience 
without checking out the project locally.

GitHub link: https://github.com/apache/logging-log4j2/discussions/4020

----
This is an automatically sent email for [email protected].
To unsubscribe, please send an email to: [email protected]

Reply via email to