Duh, guess I should have read to the end of your message for all the info.
But, if you could please enter this information into the bug database, its
resolution will get properly tracked, much better than via email.

Thanks,
-Mark

> -----Original Message-----
> From: Mark Womack 
> Sent: Wednesday, July 03, 2002 10:43 AM
> To: 'Log4J Users List'
> Subject: RE: bug with MDC with patch
> 
> 
> Eric,
> 
> By "clientNumber" I take that you are referring to one of 
> your specific keys
> that you have inserted into the MDC?  So, the bug is that if 
> I use the %X
> pattern without a specified key, log4j "blows up"?  But, 
> %X{<your key here>}
> works just fine?
> 
> Can you please enter a bug for the behavior you are seeing, 
> with as much
> detail as you can provide (examples, code, stack traces, 
> etc)?  You can find
> the bug database at
> 
> http://nagoya.apache.org/bugzilla/
> 
> thanks,
> -Mark
> 
> > -----Original Message-----
> > From: E Thors [mailto:[EMAIL PROTECTED]]
> > Sent: Wednesday, July 03, 2002 9:28 AM
> > To: [EMAIL PROTECTED]
> > Subject: bug with MDC with patch
> > 
> > 
> > I believe I have done my due diligence on this one.
> > There seems to be a problem with MDC, when you specify
> > the pattern %X without a clientNumber. The problem is
> > that the current code does not handle it gracefully.
> > It throws an exception and blows up the application.
> > Could not find anything in bug tracking. Tried to
> > check cvs, but currently seems to be down. I realize
> > that you should specify the clientNumber. An error in
> > the log4j properites file should not kill the
> > application. Below I have included a small program and
> > log4j.properties file.
> > 
> > I am wondering if someone could explain the pros and
> > cons of NDC and MDC. I have gone through the archives
> > of log4j-user. It seems like the general feeling was
> > that MDC is better. I want to be able to track a
> > user's session through the web site. So when I hit the
> > jsp page, I would call MDC.put or NDC.push the session
> > id. Anything called from the jsp page could be trace
> > by the session id. My initial unscientific experience
> > with NDC was that at times the stack seemed to retain
> > items.
> > 
> > On a related note concerning the usage of the pattern
> > %X{clientNumber}for MDC seems like it would be nice if
> >  %X without a clientNumber would print out the entire
> > Hashtable. This would allow the person debugging an
> > application that did not have access to the
> > documentation or source code an easy way to find out
> > what all of the current context were at that point.
> > They then could possibly refine the pattern they would
> > use.
> > 
> > I have gone on too long now. Hopefully someone will
> > read it.
> > 
> > Thanks,
> > 
> > eric
> > 
> > 
> > OS: Win2000
> > Java:1.3.1
> > Log4j: 1.2.4
> > 
> > ---- TestError.java----------
> > public class TestError {
> >    static Logger log = Logger.getLogger("foo");
> > 
> >    public static void main (String[] args) {
> >       PropertyConfigurator.configure(args[0]);
> > 
> >       System.out.println("start");
> >       MDC.put("test", "foo");
> >       log.warn("Warn me");
> >       log.error("Warn me");
> >       System.out.println("done");
> > 
> >    }
> > }
> > -------------------
> > ------ log4j.properties --------------
> > log4j.rootCategory=warn, A2, RR, dest2
> > 
> > # A2 is set to be a LF5Appender
> > log4j.appender.A2=org.apache.log4j.lf5.LF5Appender
> > log4j.appender.A2.layout=org.apache.log4j.PatternLayout
> > log4j.appender.A2.layout.ConversionPattern=[slf5s.start]%d{DAT
> > E}[slf5s.DATE]%n\
> >  
> > %p[slf5s.PRIORITY]%n%x[slf5s.NDC]%n%t[slf5s.THREAD]%n\
> >  
> > %c[slf5s.CATEGORY]%n%l[slf5s.LOCATION]%n%m[slf5s.MESSAGE]%n%n
> > 
> > log4j.appender.dest2.ImmediateFlush=true
> > log4j.appender.dest2.layout=org.apache.log4j.PatternLayout
> > log4j.appender.dest2.layout.ConversionPattern=%-4r
> > [%t] %-5p %c (%X) - %m ~%l%n
> > 
> > ! WRITE LOG TO A FILE, ROLL THE FILE AFTER SOME SIZE
> > log4j.appender.dest2=org.apache.log4j.DailyRollingFileAppender
> > ! This appender will only log messages with priority
> > equal to or higher than
> > ! the one specified here
> > log4j.appender.dest2.Threshold=WARN
> > ! Specify the file name (${property_key} gets
> > substituted with its value)
> > log4j.appender.dest2.File=log4j.log
> > 
> > # RR is the RollingFileAppender that outputs to a
> > rolling log
> > # file called sample.log.
> > 
> > log4j.appender.RR=org.apache.log4j.RollingFileAppender
> > log4j.appender.RR.File=sample.log
> > 
> > log4j.appender.RR.layout=org.apache.log4j.PatternLayout
> > log4j.appender.RR.layout.ConversionPattern=[slf5s.start]%d{DAT
> > E}[slf5s.DATE]%n\
> >  
> > %p[slf5s.PRIORITY]%n%x[slf5s.NDC]%n%t[slf5s.THREAD]%n\
> >  
> > %c[slf5s.CATEGORY]%n%l[slf5s.LOCATION]%n%m[slf5s.MESSAGE]%n%n
> > 
> > # Set the max size of the file
> > log4j.appender.RR.MaxFileSize=500KB
> > ------------------------
> > 
> > -------Error ----------------
> > 
> > java TestError log4j.properties
> > start
> > java.lang.NullPointerException
> >         at java.util.Hashtable.get(Hashtable.java:320)
> >         at org.apache.log4j.MDC.get0(MDC.java:121)
> >         at org.apache.log4j.MDC.get(MDC.java:75)
> >         at
> > org.apache.log4j.spi.LoggingEvent.getMDC(LoggingEvent.java:228)
> >         at
> > org.apache.log4j.helpers.PatternParser$MDCPatternConverter.con
> > vert(PatternParser.java:455)
> >         at
> > org.apache.log4j.helpers.PatternConverter.format(PatternConver
> > ter.java:56)
> >         at
> > org.apache.log4j.PatternLayout.format(PatternLayout.java:495)
> >         at
> > org.apache.log4j.WriterAppender.subAppend(WriterAppender.java:292)
> >         at
> > org.apache.log4j.RollingFileAppender.subAppend(RollingFileAppe
> > nder.java:225)
> >         at
> > org.apache.log4j.WriterAppender.append(WriterAppender.java:150)
> >         at
> > 
> org.apache.log4j.AppenderSkeleton.doAppend(AppenderSkeleton.java:221)
> >         at
> > org.apache.log4j.helpers.AppenderAttachableImpl.appendLoopOnAp
> > penders(AppenderAttachableImpl.java:57)
> >         at
> > org.apache.log4j.Category.callAppenders(Category.java:190)
> >         at
> > org.apache.log4j.Category.forcedLog(Category.java:375)
> >         at
> > org.apache.log4j.Category.warn(Category.java:1024)
> >         at TestError.main(TestError.java:11)
> > 
> > If it were to exit gracefully, you should see "done".
> > 
> > ----- Patch -------------
> > --- MDC.java    2002-07-03 12:09:01.000000000 -0400
> > +++ c:/MDC.java 2002-07-03 08:40:54.000000000 -0400
> > @@ -117,7 +117,7 @@
> >        return null;
> >      } else {
> >        Hashtable ht = (Hashtable)
> > ((ThreadLocalMap)tlm).get();
> > -      if(ht != null) {
> > +      if(ht != null && key != null) {
> >         return ht.get(key);
> >        } else {
> >         return null;
> > 
> > 
> > 
> > __________________________________________________
> > Do You Yahoo!?
> > Sign up for SBC Yahoo! Dial - First Month Free
> > http://sbc.yahoo.com
> > 
> > --
> > To unsubscribe, e-mail:   
> > <mailto:[EMAIL PROTECTED]>
> > For additional commands, e-mail: 
> > <mailto:[EMAIL PROTECTED]>
> > 
> 
> --
> To unsubscribe, e-mail:   
> <mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail: 
> <mailto:[EMAIL PROTECTED]>
> 

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to