Not to rehash this issue, but I wanted to clarify what can be vetoed,
for future reference.

I'm only bringing this up to make it clear, unless there is a
'technical justification', a veto is invalid.  In my opinion, there
was no 'technical justification' for requesting removal of the new
levels, just a preference (since the technical solution for providing
the levels was already in place).

http://www.apache.org/foundation/glossary.html#Veto

...Vetos may not be overridden nor voted down, and only cease to apply
when the committer who issued the veto withdraws it. All vetos must be
accompanied by a valid technical justification; a veto without such a
justification is invalid; in case of doubt, deciding whether a
technical justification is valid is up to the PMC....

Scott

On 1/25/14, Gary Gregory <garydgreg...@gmail.com> wrote:
> On Sat, Jan 25, 2014 at 5:10 AM, Christian Grobmeier
> <grobme...@gmail.com>wrote:
>
>> Thanks a lot Gary for the great response. Now I understand you better.
>
>
> Thank you Christian. I created the branch
> https://svn.apache.org/repos/asf/logging/log4j/log4j2/branches/new-levelsfor
> those who want to a have easy look.
>
> Gary
>
>
>>
>> On 25 Jan 2014, at 2:00, Ralph Goers wrote:
>>
>>> I have the same problem with your use of NOTICE as I did with CONFIG.
>>> If
>>> I want to see startup and shutdown log events I MUST also get warning
>>> messages, which isn’t necessarily what I want.  For startup, shutdown &
>>> configuration Markers should be used.  That doesn’t mean I probably
>>> couldn’t come up with a separate use case for the level though.
>>>
>>
>> In the end we might be able to solve everything using markers. Log levels
>> are some kind of convenient methods for me (ok, a little more).
>> We need to keep balance between them.
>>
>> I think DIAG might be really useful. At the moment I use Markers with
>> DEBUG to emulate DIAG.
>>
>> NOTICE:
>> Using Markers might require more discipline by our users than using
>> logger.notice();
>> Like: logger.debug(CONNECTIVITY, "");
>>
>> If the NOTICE recommendation would be to write everything related to
>> connectivity on this level it it would make much sense to me.
>>
>> In example:
>>  - Java app connects to MQSeries with version $x.
>>  - Java app lost connection to database, but reconnects.
>>  - Java initiates call to the Paypal API successfully (but the actual
>> communication is logged on debug / diag)
>>
>> That said, I am moving towards +1 for this change.
>>
>>
>>
>>> I agree with your other usages.
>>>
>>> Ralph
>>>
>>> On Jan 24, 2014, at 2:22 PM, Gary Gregory <garydgreg...@gmail.com>
>>> wrote:
>>>
>>>  Here is my usage:
>>>>
>>>> FATAL - Logged from main(String[]) methods when a checked exception is
>>>> caught, also for unchecked exceptions in main(String[]) like
>>>> IllegalArgumentException. You need to know if it is appropriate for
>>>> your
>>>> main(String[]) method to even throw an exception; if your class is
>>>> never
>>>> called from another Java app, then catch all exceptions and log them in
>>>> main(String[]). Also consider using this pattern for methods that
>>>> behave
>>>> like main(String[]), for example in a Quartz job's execute method. Use
>>>> before calling System.exit(int) with an error value (usually not 0).
>>>>
>>>> ERROR - Exceptions that the program cannot recover. For example: the
>>>> app
>>>> cannot connect to a database, so data cannot be read or written. A
>>>> request
>>>> needs to be re-submitted.
>>>>
>>>> WARN - Exceptions that the program can recover from. For example: a
>>>> configuration file cannot be found, so some defaults kick in. If your
>>>> app
>>>> uses configuration by exception, then this level is not appropriate,
>>>> use
>>>> NOTICE instead.
>>>>
>>>> NOTICE (now I use INFO) - The app start up and shutdown banners. The
>>>> kind of information "mvn -version" and "java -version" return. "The
>>>> server
>>>> is starting", "The server started", "The server is shutting down", "The
>>>> server is down, goodbye.". This should be the level for production
>>>> system.
>>>>
>>>> INFO - Describes what the application is doing, not too chatty. Useful
>>>> for ops to tell the server is actually up and running, this is
>>>> high-level
>>>> heartbeat kind of data. So things like "Processing request foo",
>>>> "Processed
>>>> request bar". This should be the level on QA systems.
>>>>
>>>> DIAG (now DEBUG) - What a user may need to fix problems. In a business
>>>> process app (workflow, we have a BPM app), there are the steps in the
>>>> workflow (like high level transactions: account debited for user foo,
>>>> accout credited, call logged with support, technician SMS sent, and so
>>>> on.). This should be the level on development systems.
>>>>
>>>> DEBUG - What a developer needs to debug. Connecting to database for
>>>> example. This is the bulk for debug data.
>>>>
>>>> VERBOSE (now DEBUG) - Hex dumps for wire-level communications. Contents
>>>> of buffers going in and out of memory, in and out of files. When XSL
>>>> transformations take place, log the input, the XSL being called, then
>>>> the
>>>> output.
>>>>
>>>> TRACE - method entry and method exit, nothing else.
>>>>
>>>> As you can see the DEBUG level is overloaded.
>>>>
>>>> This is the biggest problem. User debug info and internal product debug
>>>> info are MIXED. Our users are confused, our consultants don't like the
>>>> giant logs.
>>>>
>>>> Gary
>>>>
>>>>
>>>> On Fri, Jan 24, 2014 at 3:56 PM, Christian Grobmeier <
>>>> grobme...@gmail.com> wrote:
>>>> On 24 Jan 2014, at 21:47, Paul Benedict wrote:
>>>>
>>>> We should ensure that both the Javadocs and the user guide explain
>>>> recommended usages for these. Mailing lists are for the most die-hard
>>>> development fans. :-)
>>>>
>>>> +1
>>>>
>>>> Recommendations and documentation are/is absolutely necessary.
>>>>
>>>> I will happily go through the mailing list to look how you use the
>>>> various log levels.
>>>> But you also should know that I have read a ton of mails on this topic
>>>> the past
>>>> two days and I am still unsure how *you* use the log levels. I am still
>>>> stuck with my own usage,
>>>> and that is in my opinion the point why we can't reach an agreement
>>>> easily.
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> On Fri, Jan 24, 2014 at 2:38 PM, Gary Gregory <garydgreg...@gmail.com
>>>> >wrote:
>>>>
>>>> There have been descriptions of what the levels are for... see Ralph '
>>>> message, many of mine and others. I know it can be tedious to go back
>>>> through various threads but the info is there. If you want more info,
>>>> feel
>>>> free to ask ;)
>>>>
>>>> Gary
>>>>
>>>>
>>>> -------- Original message --------
>>>> From: Christian Grobmeier
>>>> Date:01/24/2014 14:20 (GMT-05:00)
>>>> To: Log4J Developers List
>>>> Subject: Re: Levels added in revision 1560602
>>>>
>>>> What I miss in this discussion are actually good examples of what the
>>>> (new) log levels are intended for.
>>>>
>>>> In example, Gary mentioned he is on a wireshark level with  "trace".
>>>> That's fine, because it would give some idea when to use verbose (maybe
>>>> entering method).
>>>>
>>>> Maybe I missed it when what I ask for was already written,
>>>> but I believe if we can give concrete example how log levels should be
>>>> used then we are a step further.
>>>>
>>>> I was asked quite a log what should be logged with which level.
>>>>
>>>> I think making the difference between trace and debug is already
>>>> difficult for a lot of users.
>>>> In the past two years i asked a lot of people how they log.
>>>>
>>>> The answer was: exceptions on error, the rest on debug.
>>>>
>>>> What we lack is a good recommendation how log levels should be used.
>>>> Something which is on our front page and which lets the "average" Java
>>>> programmer fully
>>>> understand when he uses what, and maybe even why.
>>>>
>>>> If we have something like that it is much easier to argue pro/contra
>>>> the new log levels.
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> On 24 Jan 2014, at 18:36, Scott Deboy wrote:
>>>>
>>>> To be fair, I think we represent a reasonable fraction of the
>>>> users..some won't touch new predefined levels, some will use it -
>>>> that's the reason for adding it - we hit a significant portion of use
>>>> cases with small additional number of built-in levels.
>>>>
>>>> The two solutions don't provide the same thing, do they?  If they do,
>>>> I wouldn't be pressing the issue.
>>>>
>>>> If there is a way for us, via annotations or whatever mechanism we
>>>> define for 'custom levels', to add support easily for the newly
>>>> pre-defined levels, then we should do it.
>>>>
>>>> Specifically, I'm ok with any mechanism (even using the new custom
>>>> level mechanism, but provide by log4j itself), where log4j users are
>>>> able to call:
>>>>
>>>> logger.notice(something);
>>>>
>>>> Anything else and it won't meet my expectations for usability.
>>>>
>>>> By the way, while we're at it, let's remove fatal.
>>>>
>>>> Scott
>>>>
>>>>
>>>> On 1/24/14, Remko Popma <remko.po...@gmail.com> wrote:
>>>> I'm not questioning your experience, and I believe you when you say
>>>> that
>>>> the proposed levels would be a perfect match for your current work
>>>> environment.
>>>>
>>>> However, out of the eight people that participated in the discussion
>>>> on
>>>> adding levels, four expressed strong reservations about adding
>>>> pre-defined
>>>> levels. We are all programmers on this list. So I think we can
>>>> reasonable
>>>> assume that a large fraction of users would also not like this
>>>> change.
>>>>
>>>> On top of that, we have a more powerful and elegant alternative
>>>> solution
>>>> that makes adding pre-defined levels unnecessary.
>>>> Sorry, but I veto the commit.
>>>>
>>>>
>>>>
>>>>
>>>> On Sat, Jan 25, 2014 at 1:49 AM, Gary Gregory
>>>> <garydgreg...@gmail.com>wrote:
>>>>
>>>> On Thu, Jan 23, 2014 at 10:18 PM, Ralph Goers
>>>> <ralph.go...@dslextreme.com>wrote:
>>>>
>>>> Gary, although Remko hasn’t said it I think he is implying that
>>>> he is
>>>> vetoing the code commit. Unfortunately, unless you can convince
>>>> Remko
>>>> otherwise you are going to have to revert the commit.
>>>>
>>>> Remko, if that isn’t your intention then please say so as it will
>>>> save
>>>> Gary a bunch of work.
>>>>
>>>>
>>>> Hello, hello,
>>>>
>>>> Wow, what a pickle of religious debate this has turned into!
>>>>
>>>> Before I do indeed do more work:
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> Ralph
>>>>
>>>> On Jan 23, 2014, at 6:34 PM, Remko Popma <remko.po...@gmail.com>
>>>> wrote:
>>>>
>>>>
>>>>
>>>> I wish you had a story of some kind to show why you are so strongly
>>>> opposed to the new levels. I just wonder then why you are not
>>>> arguing for
>>>> fewer levels? Is 6 levels just the perfect number in your mind? If
>>>> you
>>>> designed a new logging system right now in a clean room approach,
>>>> what
>>>> would you devise?
>>>>
>>>> FWIW, I do consider Log4j2 a brand new system, granting us the
>>>> freedom to
>>>> break APIs with version 1, which we've obviously done, but not in a
>>>> way
>>>> that will make it too difficult to port client code. For custom
>>>> appenders,
>>>> I've not tried to port my version 1 appenders yet...
>>>>
>>>>
>>>> To clarify my position on the proposed DIAG, VERBOSE, NOTICE log
>>>> levels:
>>>> I don't think these levels should be added to the Log4J API.
>>>> Here is my thinking:
>>>>
>>>> 1. The current five levels are a de facto. standard. (For example,
>>>> they
>>>> match the SLF4J levels.)
>>>>
>>>> But they do not match JUL, which is more of a standard since it is
>>>> in
>>>> the
>>>> JRE; albeit a _brain-dead_ standard; no DEBUG level JUL? Really?
>>>> So clearly we care about certain kinds of standard but not others.
>>>> Since the Slf4j author created Log4j1, I would not expect otherwise
>>>> and
>>>> it
>>>> should not make it the best solution moving forward by default.
>>>>
>>>>
>>>> They are sufficient for the vast majority of log4j users. We should
>>>> be
>>>> hesitant to change this. My position would be to not change this
>>>> unless
>>>> we
>>>> all think this is a really good idea. (The bar should be high for
>>>> this
>>>> change.)
>>>>
>>>> What are you afraid of? Confusing developers and users with 3 new
>>>> levels?
>>>> Let's give them more credit than that! ;)
>>>>
>>>>
>>>> 2. From a practical point of view, making. levels an Extensible
>>>> Enum
>>>> provides a more powerful alternative solution, making the proposed
>>>> levels
>>>> unnecessary.
>>>> 3. From an engineering/aestical POV, I feel the proposed levels are
>>>> arbitrary and the Extensible Enum solution is more elegant.
>>>>
>>>>
>>>> AGAIN, there are different features, why are they mutually
>>>> exclusive?
>>>>
>>>>
>>>> 4. The proposed levels are not only unnecessary, I think they are
>>>> actually detrimental (for lack of a better word. I mean, not having
>>>> them
>>>> would be better).
>>>> The discussion in the "Web Issues, Logging Levels, and GA" thread
>>>> shows
>>>> how much opinions can differ about naming, strength, and intended
>>>> usage,
>>>> *even in our small group*. How can we predict what levels other
>>>> users
>>>> may
>>>> want?
>>>>
>>>>
>>>> How about using your own experience as a guideline? How have the
>>>> current
>>>> levels confused your users? Would fewer levels been better for them?
>>>>
>>>> I've creating a logging system before Log4j1 existed, ported our
>>>> server
>>>> to
>>>> Log4j1 and then extended Log4j1 for our servers and tools at work.
>>>> Believe
>>>> you me, if I've taken the time to write the code, I will use it in
>>>> our
>>>> apps
>>>> instead of the inconsistent various workarounds that have propagated
>>>> in
>>>> our
>>>> code base. These are not "oh, these would be nice to have in
>>>> theory",
>>>> theses are "I know I can change my code now to use the new levels".
>>>> Granted, I am an advanced user. But like any system, I started using
>>>> a
>>>> few
>>>> features and then more and more.
>>>>
>>>> We do use TRACE for some method entry and exit. And we use DEBUG a
>>>> lot.
>>>> But we need a level, among other things, for wire level hex dumps in
>>>> all
>>>> the different parts of the systems where many loggers are used. A
>>>> level
>>>> between TRACE and DEBUG would be a perfect solution. I and others
>>>> have
>>>> made
>>>> a good case for the NOTICE level as well, which some wanted as
>>>> CONFIG.
>>>>
>>>> I see the new levels as a refinement based on experience.
>>>>
>>>> Is this now a religious debate in which there is 0 chance of
>>>> convincing
>>>> you? Or is there 1 chance?
>>>>
>>>>
>>>> The proposed levels can easily confuse users or get in the way of
>>>> users
>>>> wanting to use these names at different strengths or with a
>>>> different
>>>> intended usage.
>>>>
>>>>
>>>> Whaaat? How can you presume to know users like that? Give people
>>>> more
>>>> credit than that, we are talking about programmers here. For our end
>>>> users,
>>>> our support folks tell them "Set the level to X and run the program,
>>>> then
>>>> send us the log" where they use a GUI to generate log config files.
>>>> Our
>>>> consultants (some are programmers) that go onsite, know the software
>>>> and
>>>> what the levels mean. They and the users will be ecstatic if I say
>>>> that
>>>> the
>>>> giant logs given by DEBUG will be smaller because all the hex dumps
>>>> will
>>>> be
>>>> at the VERBOSE levels. The TRACE level is for developers debugging
>>>> very
>>>> low
>>>> level code. FWIW, we had started to use different loggers for hex
>>>> dumps
>>>> but
>>>> this was hard to enforce and harder to configure, so no more of
>>>> that.
>>>>
>>>> So before I revert anything please answer these questions and try to
>>>> convince _me_ :)
>>>>
>>>> Alternatively, feel free to reply with "I VETO this commit" and will
>>>> revert the commit.
>>>>
>>>> Thank you kindly for considering these opinions,
>>>>
>>>> Gary
>>>>
>>>>
>>>>
>>>> The fact that changes for these levels have already been committed
>>>> is
>>>> IMHO not an argument in its favor. On the contrary, I was surprised
>>>> at
>>>> the
>>>> timing of this commit: it was clear that many people were opposed
>>>> to
>>>> this
>>>> approach. To me it was also clear that we had started exploring
>>>> extensible
>>>> enums as a mechanism that would allow us to *avoid* adding
>>>> pre-defined
>>>> levels.
>>>>
>>>>
>>>> To repeat my position: I don't think these levels should be added
>>>> to the
>>>> Log4J API.
>>>>
>>>> Remko
>>>>
>>>> On Friday, January 24, 2014, Remko Popma <remko.po...@gmail.com>
>>>> wrote:
>>>>
>>>> I'm fine with Nick's proposal to have two separate votes.
>>>> Remko
>>>>
>>>> On Friday, January 24, 2014, Nick Williams <
>>>> nicho...@nicholaswilliams.net> wrote:
>>>>
>>>> There has obviously been some serious discussion about these
>>>> topics.
>>>> We're not going to come to a total agreement on this. I propose:
>>>>
>>>> - We have a committers-only vote in the "Enums and Custom Levels"
>>>> thread on whether to make Level an extensible enum.
>>>> - AFTER having that vote, we have a committers-only vote in this
>>>> thread
>>>> on whether to add these three levels.
>>>> - We only roll back this revision AFTER the second vote is
>>>> complete
>>>> and
>>>> IF the vote rejects the new levels.
>>>>
>>>> Nick
>>>>
>>>> On Jan 23, 2014, at 7:58 AM, Paul Benedict wrote:
>>>>
>>>> On Thu, Jan 23, 2014 at 11:54 AM, Scott Deboy
>>>> <scott.de...@gmail.com>wrote:
>>>>
>>>> We don't need to scuttle the new levels to support extensible
>>>> levels.
>>>>
>>>>
>>>>
>>>> Of course. The two things are not technically related. That's not
>>>> what
>>>> this is about, though. Since there are camps for and against the
>>>> new
>>>> levels, I was hoping the "extensible enum" feature would bring
>>>> about a
>>>> compromise.
>>>>
>>>>
>>>>
>>>> Gary's change is essentially a 'usability enhancement' - if
>>>> anything
>>>> close to 80% of the folks who might want custom levels can use
>>>> new
>>>> built-in levels, that's an API win in my book.  Custom levels
>>>> help
>>>> the
>>>> other 20%, and I'm supportive of that.
>>>>
>>>> Also please keep in mind this doesn't really add to our
>>>> maintenance
>>>> burden, which I think may be contributing to the concern about
>>>> adding
>>>> new levels.  Gary already did the heavy lifting, and the change
>>>> to
>>>> something other than an enum for levels would just be a bit more
>>>> work
>>>> because of this addition.
>>>>
>>>> Scott
>>>>
>>>> On 1/23/14, Paul Benedict <pbened...@apache.org> wrote:
>>>> Let's not lose sight why the "extensible enum" discussion
>>>> occurred.
>>>> Speaking solely for myself, I am not fond of the new logging
>>>> levels;
>>>> but I
>>>> don't want the framework from preventing them. The intention
>>>> behind
>>>> this
>>>> proposal was to get agreement by scuttling the new levels but
>>>> allowing
>>>> anyone to add them in their own private code.
>>>>
>>>>
>>>>
>>>>
>>>> Paul
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> 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
>>>>
>>>>
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: log4j-dev-unsubscr...@logging.apache.org
>>>> For additional commands, e-mail: log4j-dev-h...@logging.apache.org
>>>>
>>>>
>>>> ---
>>>> http://www.grobmeier.de
>>>> The Zen Programmer: http://bit.ly/12lC6DL
>>>> @grobmeier
>>>> GPG: 0xA5CC90DB
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: log4j-dev-unsubscr...@logging.apache.org
>>>> For additional commands, e-mail: log4j-dev-h...@logging.apache.org
>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Cheers,
>>>> Paul
>>>>
>>>>
>>>> ---
>>>> http://www.grobmeier.de
>>>> The Zen Programmer: http://bit.ly/12lC6DL
>>>> @grobmeier
>>>> GPG: 0xA5CC90DB
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: log4j-dev-unsubscr...@logging.apache.org
>>>> For additional commands, e-mail: log4j-dev-h...@logging.apache.org
>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> 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
>>>>
>>>
>>
>> ---
>> http://www.grobmeier.de
>> The Zen Programmer: http://bit.ly/12lC6DL
>> @grobmeier
>> GPG: 0xA5CC90DB
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: log4j-dev-unsubscr...@logging.apache.org
>> For additional commands, e-mail: log4j-dev-h...@logging.apache.org
>>
>>
>
>
> --
> 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
>

---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscr...@logging.apache.org
For additional commands, e-mail: log4j-dev-h...@logging.apache.org

Reply via email to