Extensões de log no log4j

2 respostas
P

Olá.

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.

Alguem consegue me ajudar?

2 Respostas

pedruhenrik

http://www.guj.com.br/articles/130
espero q ajude.

nunca tive esse tipo de problema.

vc configurou o log4j por xml ou classe msm? posta ai.

att,

P

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...

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;
    }

}
Criado 3 de fevereiro de 2012
Ultima resposta 6 de fev. de 2012
Respostas 2
Participantes 2