Reputation: 345
I have set the maximum file size as 100Kb. But the on exceeding the size, no new log file is generated. Instead the file size goes on increasing. If I restart the server, new log file is generated. Can someone please tell me that is this the correct scenario or is it because of any setting issue?
my log4j settings is as below.
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.File=D:/logs/sample.log
log4j.appender.file.Append = true
log4j.appender.file.layout = org.apache.log4j.PatternLayout
log4j.appender.file.MaxFileSize = 100KB
log4j.appender.file.MaxBackupIndex = 5
log4j.appender.file.layout.ConversionPattern=[%d] %-5p %c %x - %m%n
Thank in advance!
Upvotes: 1
Views: 2475
Reputation: 345
This happens because in rollOver()
method in RollingFileAppender.java
, renaming of the current log file is failing.
renameSucceeded = file.renameTo(target);
Here file.renameTo(target); returns false. To solve this, override the method and add custom code to fix the issue. One way to do is add the below code after the above statement.
if(!renameSucceeded) //custom code begins
{
try
{
FileUtils.copyFile(file, target);
BufferedWriter bw = new BufferedWriter(new FileWriter(fileName));
bw.write("");
bw.flush();
bw.close();
renameSucceeded = true;
}
catch (IOException e) {
renameSucceeded = false;
}
}
Upvotes: 1