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.
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