DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUGĀ· RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT <http://issues.apache.org/bugzilla/show_bug.cgi?id=40066>. ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED ANDĀ· INSERTED IN THE BUG DATABASE.
http://issues.apache.org/bugzilla/show_bug.cgi?id=40066 Summary: RollingFileAppender rollover does not work when gaps are present in the files Product: Log4j Version: 1.2 Platform: Other OS/Version: Windows XP Status: NEW Keywords: PatchAvailable Severity: major Priority: P2 Component: Appender AssignedTo: [email protected] ReportedBy: [EMAIL PROTECTED] On a machine under heavy load, and with restricted rights on the log-directory, it can happen that the rollover does not work for a number files. Setting to 10 files, I sometimes miss e.g. file.3, file.4, file.5 ... This seems to be related with the way the rollover method is implemented. I added a test before renaming a file, to make sure that a temporary lock during the previous operation does not cause the next operation to fail. As a result, the previous test on the last file can be removed. With this change, the problem is less frequent so I think it could be a good improvement. public // synchronization not necessary since doAppend is alreasy synched void rollOver() { File target; File file; LogLog.debug("rolling over count=" + ((CountingQuietWriter) qw).getCount()); LogLog.debug("maxBackupIndex="+maxBackupIndex); // If maxBackups <= 0, then there is no file renaming to be done. if(maxBackupIndex > 0) { // lines removed here ....... // Map {(maxBackupIndex - 1), ..., 2, 1} to {maxBackupIndex, ..., 3, 2} for (int i = maxBackupIndex - 1; i >= 1; i--) { file = new File(fileName + "." + i); if (file.exists()) { target = new File(fileName + '.' + (i + 1)); LogLog.debug("Renaming file " + file + " to " + target); // lines added here ........ if (target.exists()) // Delete the destination file, to keep Windows happy. target.delete(); // end lines added ....... file.renameTo(target); } } // Rename fileName to fileName.1 target = new File(fileName + "." + 1); this.closeFile(); // keep windows happy. file = new File(fileName); LogLog.debug("Renaming file " + file + " to " + target); file.renameTo(target); } try { // This will also close the file. This is OK since multiple // close operations are safe. this.setFile(fileName, false, bufferedIO, bufferSize); } catch(IOException e) { LogLog.error("setFile("+fileName+", false) call failed.", e); } } -- Configure bugmail: http://issues.apache.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
