What is the best way to make progress on the custom levels implementation?

Do we re-open LOG4J-41 or start a fresh Jira ticket? For implementation
ideas, do we attach files to Jira, or create a branch?

Remko

On Saturday, January 25, 2014, Gary Gregory
<garydgreg...@gmail.com<javascript:_e({}, 'cvml',
'garydgreg...@gmail.com');>>
wrote:

> On Fri, Jan 24, 2014 at 11:48 AM, Remko Popma <remko.po...@gmail.com>wrote:
>
>> Gary,
>>
>> The hard-coded levels were proposed because it seemed that the extensible
>> enum idea raised by Nick was not going to be accepted.
>> My original position was that Markers could fulfill the requirement but
>> Nick and yourself made it clear that this was not satisfactory.
>>
>> With extensible enums and markers off the table it seemed that the
>> hard-coded levels was the only alternative, and discussion ensued about
>> what these levels should be called and what strength they should have.
>>
>> During this discussion, several people, including me, repeatedly
>> expressed strong reservations about adding pre-defined levels, but by this
>> time I think people were thinking there was no alternative.
>>
>> It looked like we were getting stuck, with half the group moving in one
>> direction ("add pre-defined levels!") and the other half wanting to move in
>> another direction ("don't add pre-defined levels!"). I asked that we
>> re-reviewed our assumptions and try to reach a solution that would satisfy
>> all users.
>>
>> We then decided to explore the option of using extensible enums again.
>> This is still ongoing, but I haven't seen anyone arguing against this idea
>> since we started this thread.
>>
>> Hard-coded levels and the extensible enum are different solutions to the
>> same problem.
>>
>
> Hello All:
>
> Absolutely not. See my DEFCON example.
> Talking about an "extensible enum" is mixing design and implementation, we
> are talking about 'custom' and/or 'extensible' levels.
> Custom/Extensible levels can be designed to serve one or all of:
>
> - Allow inserting custom levels between built-in levels.
> - Allow for domain specific levels outside of the concept of built-in
> levels, the DEFCON example.
> - Should the custom levels themselves be extensible?
>
> Gary
>
>
> The extensible enum solution satisfies all of us who are opposed to adding
> pre-defined levels, while also satisfying the original requirement raised
> by Nick and yourself. Frankly I don't understand why you would still want
> the pre-defined levels.
>
> Remko
>
>
>
> On Sat, Jan 25, 2014 at 12:53 AM, Gary Gregory <garydgreg...@gmail.com>wrote:
>
> On Thu, Jan 23, 2014 at 10:45 PM, Remko Popma <remko.po...@gmail.com>wrote:
>
> Gary,
>
> I think that's a very cool idea!
> Much more flexible, powerful and elegant than pre-defined levels could
> ever be.
>
>
> As I wrote: "I am discussing custom levels here with the understanding
> that this is a separate topic from what the built-in levels are."
>
> I'm not sure why you want to make the features mutually exclusive. (Some)
> others agree that these are different features.
>
> I see two topics:
>
> - What are the default levels for a 21st century logging framework. Do we
> simply blindly copy Log4j 1? Or do we look at frameworks from different
> languages and platforms for inspiration?
> - How (not if, I think we all agree) should we allow for custom levels.
>
> Gary
>
> It definitely makes sense to design the extensible enum with this
> potential usage in mind.
>
> Remko
>
>
> On Friday, January 24, 2014, Gary Gregory <garydgreg...@gmail.com> wrote:
>
> I am discussing custom levels here with the understanding that this is a
> separate topic from what the built-in levels are. Here is how I convinced
> myself that custom levels are a “good thing”.
>
> No matter which built-in levels exits, I may want custom levels. For
> example, I want my app to use the following levels DEFCON1, DEFCON2,
> DEFCON3, DEFCON4, and DEFCON5. This might be for one part of my app or a
> whole subsystem, no matter, I want to use the built-in levels in addition
> to the DEFCON levels. It is worth mentioning that if I want that feature
> only as a user, I can “skin” levels in a layout and assign any label to the
> built-in levels. If I am also a developer, I want to use DEFCON levels in
> the source code.
>
>
> At first, my code might look like:
>
>
> logger.log(DefconLevels.DEFCON5, “All is quiet”);
>
>
> Let’s put aside for now the type of DefconLevels.DEFCON* objects. I am a
> user, and I care about my call sites.
>
>
> What I really want of course is to write:
>
>
> defconLogger.defcon5(“All is quiet”)
>
>
> Therefore, I argue that for any “serious” use of a custom level, I will
> wrap a Logger in a custom logger class providing call-site friendly methods
> like defcon5(String).
>
>
> So now, as a developer, all I care about is DefConLogger. It might wrap
> (or subclass) the Log4J Logger, who knows. The implementation of
> DefConLogger is not important to the developer (all I care is that the
> class has ‘defconN’ method) but it is important to the configuration
> author. This tells me that as a developer I do not care how DefConLogger is
> implemented, with custom levels, markers, or elves. However, as
> configuration author, I also want to use DEFCON level just like the
> built-in levels.
>
>
> The configuration code co
>
>
>
>
> --
> E-Mail: garydgreg...@gmail.com | ggreg...@apache.org
> Java Persistence with Hibernate, Second 
> Edition<http://www.manning.com/bauer3/>
> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/>
> Spring Batch in Action <http://www.manning.com/templier/>
> Blog: http://garygregory.wordpress.com
> Home: http://garygregory.com/
> Tweet! http://twitter.com/GaryGregory
>

Reply via email to