There are two separate discussions going on here, so it's easy to get lost. We
should probably split discussions again.
Discussion 1: The finer details of custom levels. I'm fine with using a static
factory method and making the constructor private, but I'm not a big fan of the
name. Just sounds awkward. Unfortunately, I can't come up with anything better.
Discussion 2: A wrapper / extended interface for logging using these custom
levels. Yes, Paul, users can just do this:
logger.log(MyCustomLevels.LEVEL1, "message");
That is already supported by making Level extensible. However, some on the team
have expressed a desire to make it even easier. Given hypothetical custom
levels DIAG and NOTE, the following would be a "nice-to-have" as you call it:
logger.note("message");
logger.diag("message");
etc.
We're discussing options to make this possible. However, it is not a
requirement to enable custom levels. Custom levels are now already possible.
Any objections to breaking discussion 2 off into another thread?
Nick
On Jan 26, 2014, at 8:46 PM, Paul Benedict wrote:
> I got lost in the discussion. Can someone please clarify... Is the custom
> logging interface a nice-to-have or a requirement of the system?
>
> I was hoping simply someone could write this (pseudocode below):
> logger.log(MyCustomLevels.LEVEL1, "message");
>
> ...so no different interface should be required, right? Can't someone just
> pass in their log level directly without using one of the named-log-level
> convenience methods?
>
>
> On Sun, Jan 26, 2014 at 8:37 PM, Matt Sicker <[email protected]> wrote:
> Now Level can't be used in an annotation. Since it supports string names for
> levels, should I just use Level.toLevel?
>
>
> On 26 January 2014 19:55, Ralph Goers <[email protected]> wrote:
> I think I must be misunderstanding the part about “If those levels were
> added…”. I don’t understand how a level can be added to a class from the
> config such that it is usable by a programmer at compile time.
>
> Ralph
>
> On Jan 26, 2014, at 5:24 PM, Scott Deboy <[email protected]> wrote:
>
>> Couldn't we no-op instead of throw if the same identical level were
>> registered?
>>
>> If those levels were then added to the same custom level class from the
>> config, could we use that single class in the logger calls?
>> On Jan 26, 2014 5:15 PM, "Ralph Goers" <[email protected]> wrote:
>> I am certain I could create a LevelPlugin that would allow you to define one
>> or more Levels in the configuration, but to use that Level the user would
>> have to code:
>>
>> logger.log(Level.toLevel(“DIAG”), “hello world”);
>>
>> In order to directly reference the level it has to be declared as a static
>> from somewhere and it can only be instantiated a single time, so creating it
>> from the configuration will prevent that.
>>
>> Ralph
>>
>> On Jan 26, 2014, at 4:03 PM, Scott Deboy <[email protected]> wrote:
>>
>>> I have one goal: to remove my request for new built in levels by allowing
>>> the levels to be defined strictly via configuration. I agree there may be
>>> some hurdles but that's my goal.
>>>
>>> I'd like to avoid the requirement that users provide their own level
>>> implementation or use a different API.
>>>
>>> Scott
>>>
>>
>
>
>
>
> --
> Matt Sicker <[email protected]>
>
>
>
> --
> Cheers,
> Paul