O log4j por padrão cria os logs assim (log.1, log.2, …)
Consigo mudar para adicionar o “.log”, porém fica assim (log.log.1, log.log.2, …)
Preciso que fique assim (log.1.log, log.2.log, …) com o “.log” no final do nome.
Minha classe está abaixo. Meus logs estão ficando assim: meulog.log, meulog-1.log, meulog-2.log…
Porém agora eu estou perdendo a configuração da propriedade MaxBackupIndex. Se configuro para manter apenas um log em backup, ele ignora…
[code]public class MyRollingFileAppender extends RollingFileAppender {
private String finalFileName;
private int sequencia = 1;
public MyRollingFileAppender(Layout layoutDef, String string) throws IOException {
super(layoutDef, string);
}
@Override
public void rollOver() {
if (qw != null) {
LogLog.debug("rolling over count=" + ((CountingQuietWriter) qw).getCount());
}
fileName = getCompleteFileName();
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);
}
}
@Override
public synchronized void setFile(String fName, boolean append, boolean ioBuffered, int sizeBuffer) throws IOException {
String newFileName = fName;
if (finalFileName == null) {
finalFileName = fName;
newFileName = getCompleteFileName();
}
super.setFile(newFileName, append, ioBuffered, sizeBuffer);
if (append) {
File f = new File(newFileName);
((CountingQuietWriter) qw).setCount(f.length());
}
}
private String getCompleteFileName() {
StringBuffer buffer = new StringBuffer(finalFileName);
String compFileName = buffer.toString() + ".log";
// Delete the oldest file, to keep Windows happy.
File file = new File(compFileName);
if (file.exists()) {// se existir irá criar um valor sequencial
buffer.append('-');
buffer.append(sequencia >= 10 ? Integer.valueOf(sequencia).toString() : "0" + sequencia);
buffer.append(".log");
compFileName = buffer.toString();
sequencia++;
} else {
sequencia = 1;
}
return compFileName;
}