Yesterday, I spent some time porting the general logic from Feather (along with 
re-adding a “ReifiedType” class similar to the “TypeReference” class in Guice) 
along with filling in the functionality gaps it had which I already had support 
for in the BeanManager API (mainly support for @Inject-annotated methods which 
is fairly 3.x-specific as 2.x only injects config data into fields and static 
factory methods). I’ve pushed some work in progress to a fork to avoid 
generating a ton of mailing list traffic (which as of now is +969,-4956 lines, 
though of course a large number of those lines are license headers due to the 
BeanManager implementation being split into several small classes) [1]. So far, 
it seems fairly promising, especially in being a bit easier to use and 
understand how it works. I’ll be working on a wiki doc in Confluence to 
describe a higher level proposal around where this is going, though I’m still 
playing around with the new Injector code before I know more on how this 
proposal will look.

[1]: https://github.com/apache/logging-log4j2/compare/master...jvz:di?expand=1
—
Matt Sicker

> On Jan 29, 2022, at 07:33, Gary Gregory <garydgreg...@gmail.com> wrote:
> 
> That sounds promising Matt, especially considering it also runs on Android.
> 
> Gary
> 
> On Sat, Jan 29, 2022, 00:27 Matt Sicker <boa...@gmail.com> wrote:
> 
>> I’ve recently been looking at a super small DI library [1] which might be
>> more useful as a basis for the new DI system. If this logic is adaptable
>> enough, this could form the basis for a sort of pico-dependency-injection
>> kernel. The current code in master is more inspired by CDI which is a bit
>> heavier which may not be necessary. I’ll experiment with that a bit and see
>> where it goes.
>> 
>> [1]: https://github.com/zsoltherpai/feather
>> —
>> Matt Sicker
>> 
>>> On Jan 28, 2022, at 11:33, Ralph Goers <ralph.go...@dslextreme.com>
>> wrote:
>>> 
>>> More than that, it has already taken too long. I’d like to support Java
>> 11 fully.
>>> 
>>> Ralph
>>> 
>>>> On Jan 28, 2022, at 9:25 AM, Matt Sicker <boa...@gmail.com> wrote:
>>>> 
>>>> I’d imagine it’s because maintaining two active development branches
>> for a long time is a pain in the ass.
>>>> —
>>>> Matt Sicker
>>>> 
>>>>> On Jan 28, 2022, at 10:15, Gary Gregory <garydgreg...@gmail.com>
>> wrote:
>>>>> 
>>>>> What is the rush for releasing version 3?
>>>>> 
>>>>> Gary
>>>>> 
>>>>> On Fri, Jan 28, 2022, 10:05 Volkan Yazıcı <vol...@yazi.ci> wrote:
>>>>> 
>>>>>> I think such an SPI effort will not add a value enough to justify the
>> delay
>>>>>> it will cause for 3.0.0. We need to release `master`, preferably,
>> ASAP,
>>>>>> IMHO. Any "enhancements" can be scheduled for later releases,
>> including
>>>>>> 4.0.0.
>>>>>> 
>>>>>> For the record, I second Ralph's idea of pulling JsonReader up from
>>>>>> JsonTemplateLayout and natively support properties+JSON in the core.
>>>>>> 
>>>>>> On Thu, Jan 27, 2022 at 9:08 PM Matt Sicker <boa...@gmail.com> wrote:
>>>>>> 
>>>>>>> Defining an appropriate SPI in log4j-plugins for how to transform a
>>>>>>> configuration source into a configuration instance seems like a good
>>>>>>> idea. Some of my earlier ideas on the DI SPI was to allow for
>>>>>>> alternative implementations that were either generated code or
>>>>>>> hand-written code to avoid runtime reflection or to allow for a
>>>>>>> statically defined configuration.
>>>>>>> 
>>>>>>> On Thu, Jan 27, 2022 at 7:37 AM Gary Gregory <garydgreg...@gmail.com
>>> 
>>>>>>> wrote:
>>>>>>>> 
>>>>>>>> On Wed, Jan 26, 2022 at 7:44 PM Carter Kozak <cko...@ckozak.net>
>>>>>> wrote:
>>>>>>>> 
>>>>>>>>> If the API is a minimal core, that sounds like a bug! However, I
>>>>>> don't
>>>>>>>>> think that's quite the case, it requires that the consumer
>> implement
>>>>>>> their
>>>>>>>>> own loggers entirely. What I'm thinking about is more of an
>>>>>>>>> spi/implementation separation akin to our loggers, but for
>>>>>> transforming
>>>>>>>>> configuration bytes into a log4j configuration.
>>>>>>>>> 
>>>>>>>> 
>>>>>>>> I thought that was the point of splitting out a log4j-plugins
>> module,
>>>>>> but
>>>>>>>> maybe that's wishful thinking on my part.
>>>>>>>> 
>>>>>>>> Gary
>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> -ck
>>>>>>>>> 
>>>>>>>>> On Wed, Jan 26, 2022, at 19:38, Matt Sicker wrote:
>>>>>>>>>> A truly minimal core that only supports properties is the API
>>>>>> itself.
>>>>>>>>> Look into SimpleLogger.
>>>>>>>>>> 
>>>>>>>>>> —
>>>>>>>>>> Matt Sicker
>>>>>>>>>> 
>>>>>>>>>>> On Jan 26, 2022, at 18:29, Carter Kozak <cko...@ckozak.net>
>>>>>> wrote:
>>>>>>>>>>> 
>>>>>>>>>>> I agree with Gary about a truly minimal core (though I'm going
>>>>>> to
>>>>>>>>> stay out of the naming argument, it's one of the two hardest
>> problems
>>>>>>> in
>>>>>>>>> CS). My largest use-case doesn't involve parsing any sort of
>>>>>>> configuration
>>>>>>>>> -- it's all programmatic. I'd benefit from the ability to run
>> without
>>>>>>> any
>>>>>>>>> sort of DI, plugin system, or configuration parser.
>>>>>>>>>>> 
>>>>>>>>>>> -ck
>>>>>>>>>>> 
>>>>>>>>>>>> On Wed, Jan 26, 2022, at 18:50, Matt Sicker wrote:
>>>>>>>>>>>> I'm not a fan of the properties format for the same reasons as
>>>>>>> Ralph.
>>>>>>>>>>>> I think we should try to support a structured format like JSON
>>>>>> by
>>>>>>>>>>>> default as a JSON parser is fairly small to define when you
>>>>>> don't
>>>>>>> need
>>>>>>>>>>>> fancy annotation-related features.
>>>>>>>>>>>> 
>>>>>>>>>>>> The plugins module might seem heavy, but the large number of
>>>>>>>>>>>> additional lines of code that would be necessary in every plugin
>>>>>>> to do
>>>>>>>>>>>> all the same boilerplate would likely be far greater than the
>>>>>>> plugin
>>>>>>>>>>>> system. Just think of all the string conversion, null checks,
>>>>>>> empty
>>>>>>>>>>>> checks, deprecated static factory methods, and config files that
>>>>>>> would
>>>>>>>>>>>> end up looking like Spring beans.xml files, if the plugin system
>>>>>>>>>>>> didn't exist. This would just be thousands more lines for
>>>>>>>>>>>> auto-formatters to have fun with.
>>>>>>>>>>>> 
>>>>>>>>>>>> While it'd be neat to just reuse another dependency for
>>>>>>> configuration
>>>>>>>>>>>> and dependency injection, what logging framework would that
>>>>>>> dependency
>>>>>>>>>>>> use? Also, any off-the-shelf DI framework will have far more
>>>>>>> features
>>>>>>>>>>>> than we need to parse a config file and create its graph of
>>>>>>> objects.
>>>>>>>>>>>> If there were something like a pico-guice type framework that we
>>>>>>> could
>>>>>>>>>>>> copy into the library like picocli, then that would be another
>>>>>>> story.
>>>>>>>>>>>> 
>>>>>>>>>>>>> On Wed, Jan 26, 2022 at 7:08 AM Gary Gregory <
>>>>>>> garydgreg...@gmail.com>
>>>>>>>>> wrote:
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Hi all,
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Is a truly small core possible for 3.0?
>>>>>>>>>>>>> 
>>>>>>>>>>>>> What I mean by that is that I'd like to run an app with log4j
>>>>>>>>> without an
>>>>>>>>>>>>> XML configuration, or JSON, or YAML, or the whole plugin
>>>>>>>>> infrastructure,
>>>>>>>>>>>>> scanning, or reading a plugin metadata db. Just a properties
>>>>>>> files.
>>>>>>>>> And if
>>>>>>>>>>>>> I can only run with just a properties file, I should be able to
>>>>>>> run
>>>>>>>>> only
>>>>>>>>>>>>> with system properties.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> With the addition in master of a separate log4j-plugins module,
>>>>>>> on
>>>>>>>>> top of
>>>>>>>>>>>>> log4j-core, 3.0 is feeling heavier and heavier, an so
>>>>>>> complicated.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> I am not an fan of inventing a whole configuration and plugin
>>>>>>>>> system, I'd
>>>>>>>>>>>>> rather depend one even if it is copying it. It just feels like
>>>>>>>>>>>>> not-invented-here syndrome.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> As an aside, I have never liked that we have a jar called
>>>>>>> log4j-core
>>>>>>>>> but on
>>>>>>>>>>>>> the web site it's called "Log4j Implementation", it's
>>>>>> confusing.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> For 3.0, it would be nice to make it obvious that what depends
>>>>>> on
>>>>>>>>> java.base
>>>>>>>>>>>>> be in a module called log4j-base instead of core.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Gary
>>>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>> 
>>>>>>> 
>>>>>> 
>>>> 
>>> 
>> 
>> 

Reply via email to