Re: Issues with java.util.logging
"Bill Au" <[email protected]> Tue, 13 Jun 2006 11:18:50 -0400
| Newsgroups | gmane.text.xml.resin.user |
|---|---|
| Message-ID | <[email protected]> |
FYI, for #2, I actually found that if a Logger's level is not set, it defaults to off rather than inheriting the value from the parent. I have opened a bug for this: http://bugs.caucho.com/view.php?id=1085 Bill On 6/12/06, Scott Ferguson <[email protected]> wrote: > > > On Jun 7, 2006, at 2:55 PM, Earl, Michael wrote: > > Hi Scott, > > I removed the default <log name="" level="info" .../> and that didn't > help. Full debug level logging is enabled by default. > > > There seems to be a missing configuration item for loggers. > > Try doing one of the following in that code: > > logger.setLevel(Level.INFO); > > Or > > handler.setLevel(Level.INFO); > > The issue looks like a combination of a few things > > 1) Handler defaults to Level.ALL > > 2) If Logger.getLevel() is not set, it defaults to the parent. > > 3) Resin doesn't have a way of configuring Logger.setLevel(...) in the > resin.conf. The "level" in the resin.conf is always the Handler level, > not the Logger level. > > 4) If Logger.setLevel isn't set, then for Logger.getLevel, Resin returns > the maximum Handler. > > Parts 3 & 4 are problems. In your case, the Handler has Level.ALL, since > that's the default. > > #4 is a Resin bug. I can fix that, although that still doesn't totally > solve your problem. > > #3 requires a new configuration item, I think, e.g. > > <logger name="com.hp.sfng" level="info" use-parent-handler="false"/> > > This would call Logger.setLevel(Level.INFO) on the "com.hp.sfng" Logger. > > But there would be a confusion with the current: > > <log path="stdout:"> > <logger name="qa" level="info"/> > </log> > > The above installs a Handler with handler level="info" in Logger.getLogger("qa"). > It does not actually set the logger's level, i.e. it really should be > handler-level="info". > > -- Scott > > > Thanks, > > Mike. > > ------------------------------ > *From:* [email protected] [ > mailto:[email protected] <[email protected]>] > *On Behalf Of *Scott Ferguson > *Sent:* Wednesday, June 07, 2006 7:41 AM > *To:* [email protected] > *Subject:* Re: Issues with java.util.logging > > > On Jun 6, 2006, at 6:33 PM, Earl, Michael wrote: > > HI Scott, > > We have a LoggerManager class to wrap calls to Logger > > > logger.addHandler( new LogHandler() ); > > > Ah. You're configuring the logger in your own code. That's something I > can look into. > > The model Resin uses is that the code gets the Logger and uses it, but the > configuration occurs in the resin.conf file, with the <log> item. The > "path=..." adds a particular Handler to the Logger. That way, configuration > is entirely in the conf file. > > Logger logger = LoggerManager.getLogger( this ); > > This is essentially what you do below. > > > Adding the handler makes a big difference. > > However, we do not use the "shortcut" methods like logger.fine(), > logger.finest() excepting entering() and exiting(). We always user > logger.logp() or logger.entering(), logger,exiting(). > > > Yes, that's essentially the same thing from the handler code. > > What may be happening is that the Loggers are all logging at Level.INFO(because there's a level="info" name="" in the > resin.conf.) If the application's Handler objects are also at Level.INFO, > they'd get displayed, too. > > So, you might need to remove the default <log name="" level="info" .../> > to keep Resin from activating the special handlers. Or you could just move > the log configuration code from the application into the resin.conf. > > -- Scott > > > Thanks for any suggestions, > > Mike. > > > > ------------------------------ > *From:* [email protected] [ > mailto:[email protected] <[email protected]>] > *On Behalf Of *Scott Ferguson > *Sent:* Tuesday, June 06, 2006 4:00 PM > *To:* [email protected] > *Subject:* Re: Issues with java.util.logging > > > On Jun 6, 2006, at 2:54 PM, Earl, Michael wrote: > > Hello All, > > We recently migrated from Tomcat to Resin. We are now discovering that > for some reason ALL of our classes are creating log messages at ALL levels. > This did not happen nor does it still happen with Tomcat -- with the same > code. We love Resin by the way so this is not a complaint. I am seeking to > understand why this is happening. I have added the following to our resin > config file: > > <logger name="com.hp.sfng" level="info" path='stdout:' > timestamp='[%H:%M:%S.%s] '/> > > This had no effect, all classes are sending log messages. > > > Can you give a sample of how you're allocating and using the Logger? Our > standard pattern is: > > package com.caucho.foo; > > public class Bar { > private static final Logger log = Logger.getLogger(Bar.class.getName()); > > Then we use > log.info - stuff users should see > log.finer - stuff application writers will want to see to help debugging > log.finest - more details for us to debug, but which may be cryptic to > outside developers > > -- Scott > > > Thanks for any help, > > Mike. > > --------------------------------------------------- > Michael Earl "For whoever exalts > Software Engineer himself will be humbled, > GO-IT MBP/SF and whoever humbles > Bldg R4 himself will be exalted." > HP, Roseville CA > +1-916-748-7958 work Matthew 23:12 > +1-916-671-4466 cell > --------------------------------------------------- > > > > >