You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4net-dev@logging.apache.org by Nicko Cadell <ni...@neoworks.com> on 2004/02/24 02:39:00 UTC

RE: Contributing/Bug#702507 - RollingFileAppender incorrectly cho oses half day roll point

Dave,

This is the right place to submit patches.
I will try reproduce this issue and test your patch.
Out of interest which time zone is it failing for you?

Cheers,
Nicko

> -----Original Message-----
> From: Dave Hutz [mailto:dhutz@extreme-messaging.com] 
> Sent: 23 February 2004 01:08
> To: 'Log4NET Dev'
> Subject: Contributing/Bug#702507 - RollingFileAppender 
> incorrectly chooses half day roll point
> 
> How do you submit a bug fix for this project?
> 
> My fix for the referenced bug is below...
> 
> Thanks,
> 	Dave
> 
> 
> /// <summary>
> /// Calculates the RollPoint for the m_datePattern supplied.
> /// </summary>
> /// <returns>The RollPoint that is most accurate for the date 
> pattern supplied</returns> /// <remarks> /// Essentially the 
> date pattern is examined to determine what the /// most 
> suitable roll point is. The roll point chosen is the roll 
> point /// with the smallest period that can be detected using 
> the date pattern /// supplied. i.e. if the date pattern only 
> outputs the year, month, day /// and hour then the smallest 
> roll point that can be detected would be /// and hourly roll 
> point as minutes could not be detected.
> /// </remarks>
> private RollPoint ComputeCheckPeriod()
> {
> 	if (m_datePattern != null) 
> 	{
> 		// set date to 1970-01-01 00:00:00Z this is 
> UniversalSortableDateTimePattern 
> 		// (based on ISO 8601) using universal time. 
> This date is used for reference
> 		// purposes to calculate the resolution of the 
> date pattern.
> 		// Bug#702507 - this fails if you are in a 
> timezone that is earlier than GMT
> 		//	Need to check both GMT and localtime.
> 		DateTime epochA = DateTime.Parse("1970-01-01 
> 00:00:00Z", System.Globalization.DateTimeFormatInfo.InvariantInfo);
> 		DateTime epochB = DateTime.Parse("1970-01-01 
> 00:00:00", System.Globalization.DateTimeFormatInfo.InvariantInfo);
> 
> 		// Get string representation of base line date
> 		string r0A = epochA.ToString(m_datePattern, 
> System.Globalization.DateTimeFormatInfo.InvariantInfo);
> 		string r0B = epochB.ToString(m_datePattern, 
> System.Globalization.DateTimeFormatInfo.InvariantInfo);
> 
> 		// Check each type of rolling mode starting 
> with the smallest increment.
> 		for(int i = (int)RollPoint.TopOfMinute; i <= 
> (int)RollPoint.TopOfMonth; i++) 
> 		{
> 			// Get string representation of next pattern
> 			string r1A = NextCheckDate(epochA, 
> (RollPoint)i).ToString(m_datePattern, 
> System.Globalization.DateTimeFormatInfo.InvariantInfo);
> 			string r1B = NextCheckDate(epochB, 
> (RollPoint)i).ToString(m_datePattern, 
> System.Globalization.DateTimeFormatInfo.InvariantInfo);
> 
> 			LogLog.Debug("RollingFileAppender: Type 
> = ["+i+"], r0A = ["+r0A+"], r1A = ["+r1A+"]");
> 			LogLog.Debug("RollingFileAppender: Type 
> = ["+i+"], r0B = ["+r0B+"], r1B = ["+r1B+"]");
> 
> 			// Check if both the string 
> representations are different
> 			if (r0A != null && r1A != null && 
> !r0A.Equals(r1A) &&
> 				r0B != null && r1B != null && 
> !r0B.Equals(r1B)) 
> 			{
> 				// Found highest precision roll point
> 				return (RollPoint)i;
> 			}
> 		}
> 	}
> 	return RollPoint.TopOfTrouble; // Deliberately head for 
> trouble...
> }
> 

RE: Contributing/Bug#702507 - RollingFileAppender incorrectly chooses half day roll point

Posted by Dave Hutz <dh...@extreme-messaging.com>.
I'm in US Eastern Time (-05:00)

-----Original Message-----
From: Nicko Cadell [mailto:nicko@neoworks.com]
Sent: Monday, February 23, 2004 8:39 PM
To: 'Log4NET Dev'
Subject: RE: Contributing/Bug#702507 - RollingFileAppender incorrectly
chooses half day roll point


Dave,

This is the right place to submit patches.
I will try reproduce this issue and test your patch.
Out of interest which time zone is it failing for you?

Cheers,
Nicko

> -----Original Message-----
> From: Dave Hutz [mailto:dhutz@extreme-messaging.com] 
> Sent: 23 February 2004 01:08
> To: 'Log4NET Dev'
> Subject: Contributing/Bug#702507 - RollingFileAppender 
> incorrectly chooses half day roll point
> 
> How do you submit a bug fix for this project?
> 
> My fix for the referenced bug is below...
> 
> Thanks,
> 	Dave
> 
> 
> /// <summary>
> /// Calculates the RollPoint for the m_datePattern supplied.
> /// </summary>
> /// <returns>The RollPoint that is most accurate for the date 
> pattern supplied</returns> /// <remarks> /// Essentially the 
> date pattern is examined to determine what the /// most 
> suitable roll point is. The roll point chosen is the roll 
> point /// with the smallest period that can be detected using 
> the date pattern /// supplied. i.e. if the date pattern only 
> outputs the year, month, day /// and hour then the smallest 
> roll point that can be detected would be /// and hourly roll 
> point as minutes could not be detected.
> /// </remarks>
> private RollPoint ComputeCheckPeriod()
> {
> 	if (m_datePattern != null) 
> 	{
> 		// set date to 1970-01-01 00:00:00Z this is 
> UniversalSortableDateTimePattern 
> 		// (based on ISO 8601) using universal time. 
> This date is used for reference
> 		// purposes to calculate the resolution of the 
> date pattern.
> 		// Bug#702507 - this fails if you are in a 
> timezone that is earlier than GMT
> 		//	Need to check both GMT and localtime.
> 		DateTime epochA = DateTime.Parse("1970-01-01 
> 00:00:00Z", System.Globalization.DateTimeFormatInfo.InvariantInfo);
> 		DateTime epochB = DateTime.Parse("1970-01-01 
> 00:00:00", System.Globalization.DateTimeFormatInfo.InvariantInfo);
> 
> 		// Get string representation of base line date
> 		string r0A = epochA.ToString(m_datePattern, 
> System.Globalization.DateTimeFormatInfo.InvariantInfo);
> 		string r0B = epochB.ToString(m_datePattern, 
> System.Globalization.DateTimeFormatInfo.InvariantInfo);
> 
> 		// Check each type of rolling mode starting 
> with the smallest increment.
> 		for(int i = (int)RollPoint.TopOfMinute; i <= 
> (int)RollPoint.TopOfMonth; i++) 
> 		{
> 			// Get string representation of next pattern
> 			string r1A = NextCheckDate(epochA, 
> (RollPoint)i).ToString(m_datePattern, 
> System.Globalization.DateTimeFormatInfo.InvariantInfo);
> 			string r1B = NextCheckDate(epochB, 
> (RollPoint)i).ToString(m_datePattern, 
> System.Globalization.DateTimeFormatInfo.InvariantInfo);
> 
> 			LogLog.Debug("RollingFileAppender: Type 
> = ["+i+"], r0A = ["+r0A+"], r1A = ["+r1A+"]");
> 			LogLog.Debug("RollingFileAppender: Type 
> = ["+i+"], r0B = ["+r0B+"], r1B = ["+r1B+"]");
> 
> 			// Check if both the string 
> representations are different
> 			if (r0A != null && r1A != null && 
> !r0A.Equals(r1A) &&
> 				r0B != null && r1B != null && 
> !r0B.Equals(r1B)) 
> 			{
> 				// Found highest precision roll point
> 				return (RollPoint)i;
> 			}
> 		}
> 	}
> 	return RollPoint.TopOfTrouble; // Deliberately head for 
> trouble...
> }
>