GitHub user rm5248 added a comment to the discussion: Next Log4cxx Major
release thoughts
> > Remove APR(or at the very minimum make it optional). I would like to see
> > the core library be in just standard C++
>
> I do not believe it is yet possible to remove the APR dependency as it
> provides essential functionality (e.g. apr_file_write, apr_proc_create) that
> is not yet in the C++ standard library.
>
Is there a reason that we should continue to use the APR functions? I haven't
looked closely, but I think for the most part the APR functions are wrappers
around `fopen` and other C functions.
> > Are there certain operations that could be better handled by newer C++
> > features? For example, could we make the API more usable by removing the
> > LOG4CXX_DEBUG family of macros and instead use variadic templates?
>
> I suggest changing the LOG4CXX_DEBUG family of macros to require logged
> values be copy-constructible/move-constructible. This would allow us to
> implement the equivalent to "asynchronous loggers" that is already in Log4j2,
> and for users to see performance benefits without any code change. The
> LoggingEvent would need to hold a
> `std::vector<std::function<void(MessageBuffer&)>>` or similar.
I like that thought.
I haven't messed around with it yet, but if we want to support newer C++
standards, we could automatically create `std::backtrace` objects, and use
`std::source_location` instead of the custom type that exists today. The
problem with the backtrace is that I don't have any ideas on how to make it
easy without a macro at the moment. The only thing I can think of is to do a
fluent interface like:
```
logger.debug("message").withLocation().withBacktrace();
```
But I prefer having the macros, since that can expand into code better. The
above example is similar to what [flogger](https://github.com/google/flogger)
does.
GitHub link:
https://github.com/apache/logging-log4cxx/discussions/519#discussioncomment-14556357
----
This is an automatically sent email for [email protected].
To unsubscribe, please send an email to: [email protected]