Never mind I see you just committed. :-)

I'll review and provide feedback if necessary.

N

On Jan 26, 2014, at 1:36 PM, Nick Williams wrote:

> Can you post a diff or the related files somewhere? Obviously it can be 
> tweaked after commit if necessary, but I'd like to see if there's anything 
> major that sticks out to me before you commit.
> 
> Thanks,
> 
> Nick
> 
> On Jan 26, 2014, at 2:57 AM, Ralph Goers wrote:
> 
>> I have completed the work on custom levels.  It uses a variation of Nick’s 
>> “extensible enum” class.  The major difference with what he proposed is that 
>> the custom enums must be declared in a class annotated with 
>> @Plugin(name=“xxxx” category=“Level”) for them to be usable during 
>> configuration.
>> 
>> Are their any objections to me checking this in?  I’ll be doing the commit 
>> at around noon Pacific Daylight Time if I don’t hear any.
>> 
>> Ralph
>> 
>> 
>> 
>> On Jan 25, 2014, at 7:08 AM, Ralph Goers <ralph.go...@dslextreme.com> wrote:
>> 
>>> I am working on the implementation of custom levels now.  I should have it 
>>> done today.
>>> 
>>> Ralph
>>> 
>>> On Jan 24, 2014, at 7:07 PM, Remko Popma <remko.po...@gmail.com> wrote:
>>> 
>>>> 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> 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
>>>> JUnit in Action, Second Edition
>>>> Spring Batch in Action
>>>> Blog: http://garygregory.wordpress.com 
>>>> Home: http://garygregory.com/
>>>> Tweet! http://twitter.com/GaryGregory
>>> 
>> 
> 

Reply via email to