Issue Details (XML | Word | Printable)

Key: LOG4NET-60
Type: Bug Bug
Status: Resolved Resolved
Resolution: Fixed
Priority: Major Major
Assignee: Nicko Cadell
Reporter: Lanchon
Votes: 1
Watchers: 1
Operations

If you were logged in you would be able to see more operations.
Log4net

Bug in RollingFileAppender.cs causing failure to timely roll files on monthly interval

Created: 15/Nov/05 04:23 PM   Updated: 08/Mar/06 02:13 AM
Return to search
Component/s: Appenders
Affects Version/s: 1.2.9
Fix Version/s: 1.2.10

Time Tracking:
Not Specified

Resolution Date: 04/Mar/06 01:54 AM


 Description  « Hide
code in said file looks like this

case RollPoint.TopOfMonth:
current = current.AddMilliseconds(-current.Millisecond);
current = current.AddSeconds(-current.Second);
current = current.AddMinutes(-current.Minute);
current = current.AddHours(-current.Hour);
current = current.AddMonths(1);
break;

i belive it should look something like this

case RollPoint.TopOfMonth:
current = current.AddMilliseconds(-current.Millisecond);
current = current.AddSeconds(-current.Second);
current = current.AddMinutes(-current.Minute);
current = current.AddHours(-current.Hour);
current = current.AddDays(1 - current.Day); // this line seems to be needed
current = current.AddMonths(1);
break;



also in a separate issue, since there is no RollPoint.TopOfYear, this comment in another part of the code seems wrong:

//is the new file name equivalent to the 'current' one
//something has gone wrong if we hit this -- we should only
//roll over if the new file will be different from the old
string dateFormat = m_now.ToString(m_datePattern, System.Globalization.DateTimeFormatInfo.InvariantInfo);
if (m_scheduledFilename.Equals(File + dateFormat))
{
ErrorHandler.Error("Compare " + m_scheduledFilename + " : " + File + dateFormat);
return;
}

if the date pattern specifies only the year (rolling yearly), then i think this "error" will be triggered incorrectly 11 times a year. it's fine not to roll, but reporting an error is inappropriate.


 All   Comments   Work Log   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
Repository Revision Date User Message
ASF #382884 Fri Mar 03 16:52:19 UTC 2006 nicko Fix for LOG4NET-60.
Fixed issue with calculation of the NextCheckDate for TopOfMonth RollPoints.
Added more descriptive docs on the NextCheckDate method.
Files Changed
MODIFY /logging/log4net/trunk/src/Appender/RollingFileAppender.cs

Nicko Cadell made changes - 04/Mar/06 01:31 AM
Field Original Value New Value
Assignee Nicko Cadell [ nicko ]
Nicko Cadell added a comment - 04/Mar/06 01:37 AM
The first point about the missing AddDays(1 - current.Day) is valid and I will check in a fix for this.

The second point I don't think is valid because there is not TopOfYear roll point. On its own the year cannot be used as a date pattern. When the date pattern is set to 'yyyy' the appender does not fall back to TopOfMonth but rather generates the following error message in the log4net internal debug log:

log4net:ERROR XmlHierarchyConfigurator: Could not create Appender [RollingFileAppender] of type [log4net.Appender.RollingFileAppender]. Reported error follows.
System.ArgumentException: Invalid RollPoint, unable to parse [yyyy]
   at log4net.Appender.RollingFileAppender.ActivateOptions() in C:\work\svn_root\apache\log4net\trunk\src\Appender\RollingFileAppender.cs:line 960

The appender is not configured or attached to any loggers, therefore the suggested error message would not occur.

Nicko Cadell added a comment - 04/Mar/06 01:54 AM
Checked in a fix for the incorrect calculation of the NextCheckDate for the TopOfMonth roll point.

Nicko Cadell made changes - 04/Mar/06 01:54 AM
Fix Version/s 1.2.10 [ 11128 ]
Status Open [ 1 ] Resolved [ 5 ]
Resolution Fixed [ 1 ]
Nicko Cadell made changes - 08/Mar/06 12:20 AM
Summary possible bugs in RollingFileAppender.cs causing failure to timly roll files on monthly or yearly intervals (and inappropriate error reports on yearly intervals). possible bugs in RollingFileAppender.cs causing failure to timely roll files on monthly or yearly intervals (and inappropriate error reports on yearly intervals).
Nicko Cadell made changes - 08/Mar/06 02:13 AM
Summary possible bugs in RollingFileAppender.cs causing failure to timely roll files on monthly or yearly intervals (and inappropriate error reports on yearly intervals). Bug in RollingFileAppender.cs causing failure to timely roll files on monthly interval
Repository Revision Date User Message
ASF #386708 Fri Mar 17 20:37:12 UTC 2006 nicko Part for fix for LOG4NET-60. Missed out important line from patch. The Days are 1 based not 0 based.
Files Changed
MODIFY /logging/log4net/trunk/src/Appender/RollingFileAppender.cs