Hi, I think a thread local formatter will give us better performance than creating one new in every log invocation.
Just my 2 cents, Thanks, Ken -----Original Message----- From: Simon Kitching [mailto:[EMAIL PROTECTED] Sent: Wednesday, October 11, 2006 5:05 AM To: Jakarta Commons Developers List Subject: Re: Logging: SimpleLog not thread-safe Hi Martin, Thanks very much for letting us know about this. I think you're right about there being a thread-safety issue. SimpleLog is definitely in use, but obviously this bug will only be triggered under pretty rare conditions, and I expect would usually just result in a malformed date string which may not be noticed anyway. But it should be fixed; I'll try to do that this weekend. Regards, Simon On Fri, 2006-10-06 at 17:15 +0100, Martin Wilson wrote: > Hi, > > I'm not sure if anyone else uses the SimpleLog class - anyway I've > noticed that SimpleLog.log is not thread-safe. The following code > (starting on line 282): > > if(showDateTime) { > buf.append(dateFormatter.format(new Date())); > buf.append(" "); > } > > makes an unsynchronized call to dateFormatter.format. As dateFormatter > is an instance variable, and DateFormat.format is not thread-safe, this > will cause problems if more than one thread tried to log at the same > time. > > Solution: remove the dateFormatter instance variable and instantiate a > new DateFormat each time in the log method, e.g. > > DateFormat dateFormatter = null; > try { > dateFormatter = new > SimpleDateFormat(dateTimeFormat); > } > catch(IllegalArgumentException e) { > dateFormatter = new > SimpleDateFormat(DEFAULT_DATE_TIME_FORMAT); > } > > Is anyone available who could make this change? > > Thanks, > Martin > ___________ > > Martin Wilson > [EMAIL PROTECTED] > > Bright Interactive: successfully delivering interactive websites and > business applications > <http://www.bright-interactive.com/> http://www.bright-interactive.com > 0870 240 6520 > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
